[英]How to send an Ajax request to Laravel 5.0 framework?
我已經整天試圖修復此問題,但似乎無法在網上找到任何可行的方法。
我正在嘗試對我的Laravel控制器執行一個簡單的ajax請求,並獲取它發送的數據。 我已將其簡化到最大程度,但仍然出現錯誤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,它將正常工作。 (將路線設置為任意)
如果您在瀏覽器控制台中查看響應,則很可能會遇到CSRF中間件 。 您需要使用用戶的csrf_token()
的當前值發布_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 。
$.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');
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.