我整个上午都试图解决这个问题,而且我似乎无法在网上找到任何工作方法。
我正在尝试向我的Laravel控制器执行一个简单的ajax请求并获取它发送的数据。我把它简化为最大值,我仍然得到数据“未定义”的ERROR 500。
似乎每个上线示例都是关于Laravel 4.0的,我不确定他们是否改变了某些东西,但似乎没有任何工作。我也尝试将路由更改为“any”,它可以直接访问,但不能使用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(data)给出以下内容:
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()
编辑: 如果我将请求更改为GET,它可以正常工作。 (设置路线到任何地方)
答案 0 :(得分:3)
如果您在回复中查看浏览器控制台,则可能会遇到CSRF middleware。您需要使用用户_token
的当前值发布csrf_token()
。
我们在页面布局中包含这个,以便通过标题(Laravel理解)自动将其添加到所有AJAX请求中:
<script>
$(function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': {!! json_encode(csrf_token()) !!};,
}
});
});
</script>
有关其工作原理的详细信息,请参阅https://github.com/laravel/framework/blob/8687d42c6674e47efc093b5092ea217b62ba293a/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php#L55。
答案 1 :(得分:0)
$.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');
}
});