vue.js - vue-resource发送ajax请求,后台Laravel接收到formData的数据为空
淡淡烟草味
淡淡烟草味 2017-05-16 16:51:02
0
2
691

vuejs使用vue-resource发送ajax请求代码:

methods: {
                fillIn: function (index, n) {
                    var formData = new FormData();
                    var itemId=this.items[index].id;
                    this.items[index].publishing_days = n;
                    formData.append('publishing_days', n);

                    this.$http.patch('/article/'+itemId, formData,{
                        before(request) {
                            if (this.previousRequest) {
                                this.previousRequest.abort();
                            }
                            this.previousRequest = request;
                        }
                    }).then((response) => {

                    }, (response) => {

                    });
                }
            }

这是ajax请求发送的数据截图:

ArticleController


    public function update(Request $request, $id)
    {
        $article = Article::findOrFail($id);
        dd($article);
        dd($request->publishing_days); 
    }

问题:
dd($request->publishing_days); 的结果是null,怎么回事呢?

淡淡烟草味
淡淡烟草味

全部回复(2)
刘奇

如图,emulateJSON属性你可设置了?

vue-resource

左手右手慢动作

这是因为header头的问题,web服务器无法处理put, patch和delete这种rest风格的请求,启用该选项后,请求会以普通的post方法发出;


在vue-resource文档中,有这样一句话:

Send PUT, PATCH and DELETE requests with a HTTP POST and set the X-HTTP-Method-Override header

所有我们在代码中加上这个属性并将值设置为true即可:

this.$http.patch('/demo', formData, {emulateHTTP: true});

再对比一下header头:

加上属性后:
X-CSRF-TOKEN:ngenvCDnCOXWkQqbLjIdSo7Ekq7wjfLg0TqUMNcu
X-HTTP-Method-Override:PATCH
X-Requested-With:XMLHttpRequest


加上属性前:
X-CSRF-TOKEN:ngenvCDnCOXWkQqbLjIdSo7Ekq7wjfLg0TqUMNcu
X-Requested-With:XMLHttpRequest
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!