我尝试通过 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/