Laravel使用ajax将数据传递给控制器

时间:2014-10-14 00:53:07

标签: ajax laravel routes

如何将此ajax调用中的id传递给TestController getAjax()函数?当我进行调用时,url是testUrl?id = 1

Route::get('testUrl', 'TestController@getAjax');

<script>
    $(function(){
       $('#button').click(function() {
            $.ajax({
                url: 'testUrl',
                type: 'GET',
                data: { id: 1 },
                success: function(response)
                {
                    $('#something').html(response);
                }
            });
       });
    });    
</script>

TestController.php

public function getAjax()
{
    $id = $_POST['id'];
    $test = new TestModel();
    $result = $test->getData($id);

    foreach($result as $row)
    {
        $html =
              '<tr>
                 <td>' . $row->name . '</td>' .
                 '<td>' . $row->address . '</td>' .
                 '<td>' . $row->age . '</td>' .
              '</tr>';
    }
    return $html;
}

3 个答案:

答案 0 :(得分:14)

最后,我刚刚将参数添加到Route :: get()和ajax url调用中。我在getAjax()函数中将$ _POST [&#39; id&#39;]更改为$ _GET [&#39; id&#39;],这得到了我的回复

Route::get('testUrl/{id}', 'TestController@getAjax');

<script>
    $(function(){
       $('#button').click(function() {
            $.ajax({
                url: 'testUrl/{id}',
                type: 'GET',
                data: { id: 1 },
                success: function(response)
                {
                    $('#something').html(response);
                }
            });
       });
    });    
</script>

TestController.php

public function getAjax()
{
    $id = $_GET['id'];
    $test = new TestModel();
    $result = $test->getData($id);

    foreach($result as $row)
    {
        $html =
              '<tr>
                 <td>' . $row->name . '</td>' .
                 '<td>' . $row->address . '</td>' .
                 '<td>' . $row->age . '</td>' .
              '</tr>';
    }
    return $html;
}

答案 1 :(得分:6)

你的ajax的方法是GET但是在控制器中你使用$ _POST来获取    值。这是问题。

你可以

$id = $_GET['id'];

但在Laravel,它有一个很好的方法来做到这一点。这是here。您无需担心用于请求的HTTP谓词,因为所有谓词都以相同的方式访问输入。

$id = Input::get("id");

如果需要,可以过滤请求类型以控制异常。 Docs here

确定请求是否使用AJAX

if (Request::ajax())
{
    //
}

答案 2 :(得分:0)

#in your controller function    
public function getAjax()
{
    #check if request is ajax
    if ($request->ajax()) {
        //your code
    }

    return $your_data;
}