簡體   English   中英

如何向Laravel 5.0框架發送Ajax請求?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM