我尝试通过PUT方法发送数据,但是Laravel 5.5在目标控制器上的Input(或Request)中没有看到任何数据。
这里是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控制器中我尝试显示输入:
echo '[Controller]Inputs:';
return Input::all();
这里输出来自console.log:
Update selected
{…}
project_id: "4"
user_id: 1
__proto__: Object { … }
[Controller]Inputs:[]
问题:我做错了什么,输入数据在哪里? 附:我只能使用纯javascript,没有jQuery或者其他。
答案 0 :(得分:0)
通过添加标题解决问题:
xhr.setRequestHeader("content-type", "application/json");
并将数据包装到JSON:
xhr.send(JSON.stringify(data));