Laravel。我无法从控制器上的帖子中获取数据

时间:2015-05-27 16:11:13

标签: ajax laravel post

Laravel 5.我对Laravel完全不熟悉。并没有得到javascript ajax数据到控制器。

有一个“主”文件。它是带有ajax javascript的“yield”文件。哪里有ajax javascript加载表文件。桌面是通过仅重新加载表来“分页”。页面的其余部分不会改变。

routes.php文件

    Route::get('/', 'AddressController@tablePage');

    Route::post('addresses.table', 'AddressController@table');


// Route::post('addresses.table', function(){
//  return var_dump(Input::all());
// });

AddressController.php

<?php namespace App\Http\Controllers;

use App\Http\Requests;
use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

class AddressController extends Controller {

    public function tablePage()
    {
        return view('addresses.page');
    }


    public function table()
    {
        return var_dump(Input::all());
        // $r = 0; //Input::get('r');
        // $f = '';//Input::get('f');
        // $rc = 5;//Input::get('rc');

        // $add = \App\Models\Address::table('work_name', 'LIKE', '%'.$f.'%', $rc ,$r);
        // $addRowCount = \App\Models\Address::tableRowCount('work_name', 'LIKE', '%'.$f.'%');

        // $data = [
        //  'addresses' => $add,
        //  'addRowCount' => $addRowCount, 
        //  'rc' => $rc, 
        //  'r' => $r
        // ];

        // return view('addresses.table', $data);
    }

}

ajax javascript文件

// function runing when clicking on pagination
    function fnLoadTable(r)
    {
        $('#mainGifLoader').fadeIn('fast');

        if(typeof r == 'undefined')
            r = 1;

        var f = '';//$('#tFind').val();
        var rc = 5;//$('#pageTableRowCount').val(); 

        if(typeof rc == 'undefined')
            rc = 5;

        $.post(
            'addresses.table', 
            { r:r, f:f, rc:rc }, 
            function(result)
            {
                $('#idTable').html(result);
                $('#mainGifLoader').fadeOut('fast');
            }); 
    };

使用ajax帖子有弯曲的令牌。

从javascript数据发送。使用胶合路线时可以看到这一点。

但是AddressCountroller @ table,我无法获得这些POST数据。

哪里会出错?

谢谢。

2 个答案:

答案 0 :(得分:0)

根据documentation

尝试此操作 路线中的

Route::post('addresses/table', [
    'as' => 'table', 'uses' => 'AddressController@table'
]);

在jquery中:

     $.post(
        '/addresses/table', 
        { r:r, f:f, rc:rc }, 
        function(result)
        {
            $('#idTable').html(result);
            $('#mainGifLoader').fadeOut('fast');
        }); 

答案 1 :(得分:0)

默认情况下,除了GETHEAD请求外,laravel5还需要一个csrf令牌以及帖子数据。除非您在$.ajaxSetup()中发送令牌,否则您必须在请求中包含令牌。否则,您将收到500内部服务器错误消息Tokenmismatch exception

修改以下部分的代码:

 $.post(
        'addresses.table', 
        { r:r, f:f, rc:rc, _token:"{{csrf_token()}}" }, 
        function(result)
        {
            $('#idTable').html(result);
            $('#mainGifLoader').fadeOut('fast');
        });  

您需要发送附加参数“_token”以及其他数据。

相关问题