首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Laravel中使用Vue.js和Vue资源调用AJAX

在Laravel中使用Vue.js和Vue资源调用AJAX
EN

Stack Overflow用户
提问于 2016-12-31 07:13:52
回答 0查看 2K关注 0票数 2

我正在使用Vue.js和Vue资源在Laravel中发出AJAX请求。

我的观点是:

代码语言:javascript
复制
{{Form::open(['method' => 'post', 'class' => 'form-inline', 'id' => 'main-form'])}}
{{Form::text('param1', null, ['id' => 'param1', 'class' => 'form-control'])}}
{{Form::text('param2', null, ['id' => 'param2', 'class' => 'form-control'])}}
<input @click="sendIt($event)" type="submit" value="Check prices" class="btn btn-success btn-theme" />
{{Form::close()}}

我有js:

代码语言:javascript
复制
var Vue = require('vue');
var VueResource = require('vue-resource');
Vue.use(VueResource);
Vue.http.headers.common['X-CSRF-TOKEN'] = $('meta[name=_token]').attr('content');
const app = new Vue({
el: '#app',
methods: {
sendIt: function (e)
    {
        e.preventDefault();
        var token = $('[name="_token"]').val();
        this.$http.post('/data').then((response) => {
            console.log(response);
        }, (response) => {
            console.log(response);
        });
    }
}

路由:

代码语言:javascript
复制
Route::post('/data', 'MainController@data');

和控制器:

代码语言:javascript
复制
public function data() 
{
    $msg = $this->test(); //method that retrieves data from db
    return response()->json(['msg'=> $msg], 200);
}

它给我的post 500内部服务器错误

作为响应,我得到了这个头:

代码语言:javascript
复制
Cache-Control
Content-Type
Date
Phpdebugbar-Id
Server
Status
Transfer-Encoding
X-Powered-By

在我的数据站点的网络中,我有没有令牌的响应头,有令牌的请求头,并且我在请求有效负载中有令牌。

如果我将方法更改为get,也会出现同样的错误,但如果我将方法更改为get,并且从控制器中删除了从db检索数据的部分代码,而只是将字符串传递给json (例如:

代码语言:javascript
复制
$msg = 'test';
return response()->json(['msg'=> $msg], 200);

我成功了,我可以在页面上输出测试。

所以我不确定是token有什么问题还是别的什么问题。我试过了,结果是:

代码语言:javascript
复制
var token = $('[name="_token"]').val();
this.$http.post('/prices', {_token:token})

但是什么都没有。同样的错误再次出现。

如果我加上这个:

代码语言:javascript
复制
http: {
    headers: {
  X-CSRF-TOKEN: document.querySelector('#token').getAttribute('content')
    }
},

我在页面加载时出现语法错误。

如果我改成这样:

代码语言:javascript
复制
http: {
    headers: {
  Authorization: document.querySelector('#token').getAttribute('content')
    }
}

我再次收到内部服务器错误。

这是我在主视图中的标记:

代码语言:javascript
复制
<meta name="csrf-token" id="token" content="{{ csrf_token() }}">

<script>
    window.Laravel = <?php echo json_encode([
        'csrfToken' => csrf_token(),
    ]); ?>
</script>

编辑:

如果我在x-csrf-token周围添加引号,但仍然出现令牌不匹配错误,则此部分可以工作。

代码语言:javascript
复制
http: {
    headers: {
        'X-CSRF-TOKEN': document.querySelector('#token').getAttribute('content')
    }
},
EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41403861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档