我在使用Laravel方面遇到了麻烦,特别是从我的JavaScript获取AJAX请求数据但是我能够通过测试返回字符串在我的控制器和我的前端之间建立连接并且它可以工作,但我只是无法从前端获取我的数据。
这是JavaScript代码:
var obj = {
name: 'foo',
food: 'something'
}
function sendMsg(obj) {
var request = new XMLHttpRequest();
request.onreadystatechange = function() {
if(request.readyState === 4 && request.status === 200) {
console.log(request.responseText);
}
};
request.open("POST","create/new.php");
request.setRequestHeader("Content-Type","x-www-form-encoded");
request.send(encodeData(obj));
}
sendMsg(obj);
encodeData函数基本上只是将我的对象编码为表单编码字符串。
这是我的路线:
Route::post('create/{new}', 'AppController@createNew');
我的控制员:
public function createNew() {
$input = Input::all();
return $input;
}
我得到的响应是一个空数组,我也尝试使用:
Input::get('name');
但它也不起作用。
我检查了在dev工具中发送到laravel的请求标头,并且帖子正文中填充了我想传递给控制器的编码字符串,但我似乎无法在我的控制器中检索它。以前有人经历过这个吗?任何见解和建议都会受到赞赏。提前谢谢!
编辑:在JavaScript部分添加数据对象,以便我的代码更完整。
答案 0 :(得分:3)
您没有在JS中设置正确的Content-Type
标头。
应该如下:
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");