如何向 Laravel 5.0 框架发送 Ajax 请求?
How to send an Ajax request to Laravel 5.0 framework?
我整个上午都在尝试解决这个问题,但我似乎无法在网上找到任何工作方法。
我正在尝试向我的 Laravel 控制器发出一个简单的 ajax 请求并获取它发送的数据。我已将它简化到最大程度,但我仍然得到数据 "undefined".
的错误 500
似乎每个在线示例都是关于 Laravel 4.0,我不确定他们是否更改了某些内容,但 none 似乎有效。我还尝试将路由更改为 "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(数据)给出以下内容:
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,它会正常工作。 (将路线设置为任意)
如果您在浏览器控制台中查看响应,您很可能会点击 CSRF middleware。您需要 post _token
与用户 csrf_token()
.
的当前值
我们将其包含在我们的页面布局中,以便通过 header(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。
$.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');
}
});
我整个上午都在尝试解决这个问题,但我似乎无法在网上找到任何工作方法。
我正在尝试向我的 Laravel 控制器发出一个简单的 ajax 请求并获取它发送的数据。我已将它简化到最大程度,但我仍然得到数据 "undefined".
的错误 500似乎每个在线示例都是关于 Laravel 4.0,我不确定他们是否更改了某些内容,但 none 似乎有效。我还尝试将路由更改为 "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(数据)给出以下内容:
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,它会正常工作。 (将路线设置为任意)
如果您在浏览器控制台中查看响应,您很可能会点击 CSRF middleware。您需要 post _token
与用户 csrf_token()
.
我们将其包含在我们的页面布局中,以便通过 header(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。
$.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');
}
});