我已经尝试了所有上午解决这个问题,似乎我无法在网上找到任何工作方法。
我试图做一个简单的Ajax请求,我Laravel控制器,并把它发送数据。我已经将它简化到最大,我仍然得到数据“未定义”错误500。
似乎每例人在线是关于Laravel 4.0,我不知道,如果他们改变了什么或没有,但似乎没有工作。我也试图改变的路线“任何”,它工作在直接访问,但不与Ajax请求。
谢谢。
控制器:
<?php namespace App\Http\Controllers;
use Session, DB, Request;
class AjaxController extends Controller {
public function question()
{
print_r("Made It");
die();
}
}
路线:
Route::post('/ajax/question', 'AjaxController@question');
使用Javascript:
$.ajax({
url: "/ajax/question",
method: 'POST',
data: { 'answered': '1' },
processData: false,
contentType: false,
cache: false,
success: function(data) {
console.log(data);
console.log("success");
},
error: function(data) {
console.log(data);
console.log("error");
}
});
的console.log(数据)给出以下:
readyState
4
responseText
""
status
500
statusText
"Internal Server Error"
abort
function(e)
always
function()
complete
function()
done
function()
error
function()
fail
function()
getAllResponseHeaders
function()
getResponseHeader
function(e)
overrideMimeType
function(e)
pipe
function()
progress
function()
promise
function(e)
setRequestHeader
function(e, t)
state
function()
statusCode
function(e)
success
function()
then
function()
编辑:如果我更改请求得到它正常工作。 (设定路线的话)
如果您在您的浏览器控制台的响应看,机会是你打的CSRF middleware。您需要发布_token
与用户的csrf_token()
当前值。
我们包括在此以自动添加到通过头所有的AJAX请求(其中Laravel理解)我们的页面布局:
<script>
$(function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': {!! json_encode(csrf_token()) !!};,
}
});
});
</script>
$.ajax({
type: "POST",
URL: "test/",
data: {
id: $(this).val(), // < note use of 'this' here
access_token: $("#access_token").val()
},
success: function(result) {
alert('YES');
},
error: function(result) {
alert('Some Thing went wrong');
}
});