簡體   English   中英

Laravel 5.3 Ajax-檢索控制器發出的ajax請求中發送的數據

[英]Laravel 5.3 Ajax - Retrieve data sent in the ajax request from the controller

index.html

<form id="my-form">
 <select id="my-select">
  <option value="1">Tom</option>
  <option value="2">Jerry</option>
 </select>
 <input type="submit" value="send data!">
</form>

Controller.php

public function getValue(Request $request)
{
 return User::find($request->input('select_id'));
}

ajax.js

$(function () {

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

var showUser = $('#show-user');

$('#my-form').on('submit', function () {

    var select_id = $('#my-select').val();

    $.ajax({
        method: "POST",
        url: "ajax",
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        },
        data: {
            "select_id": select_id
        },
        error: function (data) {
            //something went wrong with the request
            alert("Error");
        },
        success: function (data) {
            inner = "";
            data.forEach(function (el, i, array) {
                inner += "<div>" + el.name + "</div>";
            });
            showUser.html(inner);
        }
    });
    event.preventDefault();
});

});

web.php

Route::post('ajax','Controller@getValue');

更新:

@Mahdi Youseftabar->謝謝,根據文檔,我應該使用input()來獲取請求!

問題1:錯誤:500(TokenMismatchException);

我做了什么?

將meta添加到:

<meta name="csrf-token" content="{{ csrf_token() }}">

我設置標題:

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

    $.ajax({
    ...
        headers: {
            'X-Auth-Token' : token
        },
    ...
    });

我需要做什么?

  • 檢索從控制器發出的ajax請求中發送的ID [已解決]
  • 通過ajax請求驗證令牌**錯誤505(問題1) [已解決]
  • 控制器退貨為空 [已解決]
  • 將用戶輸出到<div class="showUser"></div> [已解決]

我項目的Github文檔:(許多關系-Laravel 5.3,Ajax) https://github.com/39ro/StudentSchoolProject

您的問題出在路線上:

Route:post('ajax','Controller@getValue');

您在jQuery中使用post方法,但在route中定義了route方法'get'...

在這種情況下,當您使用ajax請求時,laravel會給您空響應

另一個問題是從請求中獲取user_id,您應該在控制器中使用它:

return User::find($request->input('user_id');

兩件事檢查

在js中

data: {"userid" : userid}
method: "POST",

在控制器中

$value_select =  User::where($request->userid)->first();
return $value_select;

現在檢查響應並告訴我是否可行

如果沒有錯誤,並且結果為null,則可能丟失了某些內容。

請記住,您在控制器中使用的find()函數僅在搜索主鍵。

並且它是ajax請求,因此您不會在瀏覽器中看到它。 要查看返回值,您應該在

開發人員工具>網絡>然后找到請求以查看預覽和響應

向Controller.php添加關系

我的問題是與其他兩個表的關系。 我通過鏈接到我的GitHub項目的鏈接來更新我的主要問題,我在其中應用了您的所有建議! 謝謝大家,我解決了!

對於令牌,我解決了添加在Ajax.js中顯示的內容。

為了從關系中檢索數據,我就這樣做了:

public function getValue(Request $request)
{
return User::find($request->input('select_id'))->relationship_table;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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