【发布时间】:2018-05-12 06:50:15
【问题描述】:
我尝试通过 PUT 方法发送数据,但 Laravel 5.5 在目标控制器的输入(或请求)中看不到任何数据。
这里是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:[]
问题:我做错了什么,输入数据在哪里? p.s.我只能使用纯 javascript,不能使用 jQuery 或其他。
【问题讨论】:
-
我会猜测 laravel 期望您的数据在 url 编码的名称/值对中,而不是在 javascript 对象中。尝试
var data = 'project_id=' + encodeURIComponent(option.value) +"&user_id=" + encodeURIComponent({{auth()->user()->id}});并发送。 -
控制器中仍然没有数据...
标签: javascript ajax laravel laravel-5