使用ajax将数据从视图传递到控制器

时间:2015-02-09 06:28:12

标签: php jquery ajax laravel

我正在尝试将按钮单击的一些数据发送到控制器,并在视图中的内容div中显示响应。但是,在将数据发送到控制器时,我遇到了问题。这是我想要做的:

test.php的     

<script>
$(document).ready(function(){
    $("#btn1").click(function(){
        $.ajax({
            type: 'GET',
            url: 'get-response',
            dataType: 'json',
            data: {
                "id": "1"
            },
            success: function(response){

                $('#content').html(response.first);
            }
        });

    });

     $("#btn2").click(function(event){
        $.ajax({
            type: 'GET',
            url: 'get-response',
            dataType: 'json',
            data: {
                "id": "2"
            },
            success: function(response){

                $('#content').html(response.first);
            }
        });

    });
    });
    </script>


   <input type="button" id="btn1" value="Button1 Content" />
   <input type="button" id="btn2" value="Button2 Content" />
   <br>
   <div id="content"></div>

route.php

Route::get('ajax-example', function(){
return View::make('test');
});

Route::get('get-response/{id}', array('as'=>'get-response', 'uses'=>'AjaxController@getResult'));

AjaxController.php

public function getResult($id){
    if($id==1){
        $content = "Hello";

    }
    else if($id==2){
        $content = "World";

    }
    return Response::json(array('first'=>$content));
}

错误 enter image description here 有人可以帮帮我吗。我现在有点困惑。谢谢:))

2 个答案:

答案 0 :(得分:1)

如果您需要获取参数,请执行此操作,

Input::get('id');

和路线

Route::get('get-response', array('as'=>'get-response', 'uses'=>'AjaxController@getResult'));

因为您的ajax请求类似host/get-response?id=5,而且与Route::get('get-response/{id}'..不兼容,因为此路由需要host/get-response/5


另一种方法是,您可以按照声明的方式保留路线并更改ajax请求网址

   $.ajax({
        type: 'GET',
        url: 'get-response/'+1,
        dataType: 'json',
        data: {},
        success: function(response){

            $('#content').html(response.first);
        }
    });

答案 1 :(得分:0)

好吧所以我想我想出了导致问题的原因。

我将路线改为

Route::get('get-response', array('as'=>'get-response', 'uses'=>'AjaxController@getResult'));

并在控制器中添加了

public function getResult(){
      $id = $_GET['id'];

现在看起来工作得很好:)