javascript - 从纯 Javascript 发送 PUT 到 Laravel Controller

标签 javascript ajax laravel laravel-5

我尝试通过 PUT 方法发送数据,但 Laravel 5.5 在目标 Controller 上的输入(或请求)中看不到任何数据。

这里是 JS:

    function selectProject(option){

        console.log('Update selected');

        var data = new Object();
        data.project_id = option.value;
        data.user_id ={{auth()->user()->id}};
        console.log(data);

        var url = "/admin/projects";
        var xhr = new XMLHttpRequest();

        xhr.open("PUT", url+'/update_selected', true);
        xhr.setRequestHeader("X-CSRF-TOKEN", "{{ csrf_token() }}");
        xhr.onload = function () {
                var response = xhr.responseText;
                if (xhr.readyState == 4 && xhr.status == "200") {
                        console.log(response);
                        document.getElementById("app").innerHTML = response; 
                } else {
                        console.log(response);
                        document.getElementById("app").innerHTML = response; 
                }
        }
        xhr.send(data);
    }

在 Laravel Controller 中,我尝试显示输入:

    echo '[Controller]Inputs:';
    return Input::all();

这里是 console.log 的输出:

Update selected
{…}
 project_id: "4"
 user_id: 1
 __proto__: Object { … }
[Controller]Inputs:[]

问题:我做错了什么,输入数据在哪里? 附:我只能使用纯 javascript,不能使用 jQuery 或其他。

最佳答案

通过添加header解决的问题:

xhr.setRequestHeader("content-type", "application/json");

并将数据包装成 JSON:

xhr.send(JSON.stringify(data));

关于javascript - 从纯 Javascript 发送 PUT 到 Laravel Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47537923/

相关文章:

javascript - 处理 Redux 状态的函数的名称(例如 reducer 和选择器)

javascript - 修复复选框元素中的切换所有行为

javascript - 在 jQuery 中使用 AJAX 以表格格式自动完成显示来自 JSON 的两列

javascript - IE8 上的 jQuery ajax 总是返回错误 : "Type Error: Could not complete the operation due to error 80070005"

javascript - 在数据库问题中保存模式消息

javascript - 如何在 Chrome 插件/其他来源中使用 CSRF token

php - 拉拉维尔 5.4 : Converting a raw SQL query in Laravel Eloquent

javascript - Mongoose - 如何处理空结果

javascript - 在 Vue.Js 中的 v-text 中附加多个字段

github - 'ssh' 未被识别为内部或外部命令