簡體   English   中英

如何通過post方法將數據從ajax傳遞到laravel 5.2控制器

[英]How to pass data from ajax to laravel 5.2 controller via post method

你好StackOverflow家族。 這是我的第一個問題,我希望得到幫助。

我是laravel框架的新手,在我的項目中使用的是5.2版本。 我試圖使用post方法從我的ajax函數傳遞數據到特定的控制器方法,但沒有數據傳遞給控制器​​。

我按照這個論壇中的步驟https://laracasts.com/discuss/channels/laravel/process-data-in-controller-using-ajax-in-laravel但無法使其工作。 這是我到目前為止所做的。

我的JavaScript( post_script.js ):

$.ajax({
    method: 'POST',
    url: './home',
    data: {
        userID: 76,
        userName: 'Jimmy'
     },
});

請注意,此文件保存在laravel結構的assets/js目錄中。 這是我在路由文件( routes.php )中的內容:

Route::get('/', "MyController@home");
Route::get('home', "MyController@home");

這是我在MyController.php文件中的函數:

function home(Request $request) {
    $userID = $request['userID'];
    $userName = $request['userName'];
    return view('home', [
      'userID'=> $userID,
      'userName' => $userName
    ]);
}

在我看來,我試圖像這樣訪問它:

<p>User ID: {{$userID}}</p>
<p>User Name: {{$username}}</p>

什么都沒顯示! 請問我做錯了什么? 我需要你的幫助。 如果我的問題不合適,請原諒我,但我希望你明白我的意思。 謝謝

您的AJAX正在POST,但您沒有設置POST路由,只有GET。 添加POST路由,如下所示:

Route::post('home', "MyController@home");

首先檢查您的開發人員/網絡工具(例如,firebug),你的ajax調用是否達到了所需的控制器/功能,並且參數是否正確轉發。

在Laravel環境中在ajax調用中指定Url的安全方法是使用URL facade,如下所示:

url: "{{ URL::to('home'); }}",

為了做到這一點,你必須將你的js存儲為myscript.blade.php(!!)文件並將其包含在你的視圖中。

為了在控制器函數中接收已發布的參數,不需要聲明函數參數,只需使用Input :: Get()函數即可。 像這樣:

public function home()
{
  $userID = Input::Get('userID');
  $userName = Input::Get('userName');
  return view('home', [ 'userID'=> $userID, 'userName' => $userName ]);
}

如果您嘗試執行POST請求,則可能需要使用X-CSRF-Token

將此添加到元:

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

並設置你的AJAX:

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

在Laravel文檔中: https ://laravel.com/docs/5.2/routing#csrf-x-csrf-token

首先,你需要像這樣設置ajax請求的dataType(如果你使用jQuery)

 $.ajax({
    method: 'POST',
    url: './home',
    dataType: 'json'
    data: {
        userID: 76,
        userName: 'Jimmy'
     },
})

然后嘗試使用您的控制器,如下所示

Request::json()

並看到結果

你也可以使用Input :: get():

Request::get('userID')

您可以使用路由名稱將數據傳遞給控制器

 $.ajaxSetup({
            headers:{'X-CSRF-TOKEN': $("meta[name='csrf-token']").attr('content')}
        });
        $.ajax({
            type:'POST',
            url: '{{route("route_name_with_post_method")}}',
            data:{
              'id': data
            },
            success:function(r){

            },error:function(r) {

            }
        });

暫無
暫無

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

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