在laravel 4中没有ajax响应

时间:2014-05-23 12:09:29

标签: javascript php jquery ajax laravel

我正在从名为category的用户那里获取输入。在每个键上我想执行ajax请求来搜索是否存在具有相似名称的类别。如果是,那么在该输入下面有一个空白div,我想填写相似的名称类别。

所以我创建了一个表单。通过jquery使用ajax,但我没有收到回复。

这是我正在使用的jquery ajax代码

$("#category").keyup(function () {
    $.ajax({
        url: "categories/categoryajaxrequest",
        type: "get",
        data: {
            category: $("#category").val()
        },
        success: function (response) {
            $("#category_suggestion").html(response);
        }
    });
});

这是在ajax请求中用作url的路由部分

Route::get('categories/categoryajaxrequest', array('as' =>'categoryajaxrequest', 'uses' =>'CategoryController@categoryAjaxRequest'));

这是控制器部分

//app/controllers/CategoryController.php

....

public function categoryAjaxRequest(){
    echo "working";
}

因此,输入文本的id为“category”,在输入下方,有一个id为“category_suggestion”的div。在输入的每个键盘上,我希望它执行ajax请求并在div中显示“成功”。但它没有做任何事情。

但是,如果我在浏览器上直接转到“/ categories / categoryajaxrequest”,它会输出“working”。

1 个答案:

答案 0 :(得分:1)

尝试将操作直接放在url:方法的$.ajax()属性中,然后不需要路由:

Laravel给了我们这样做的自由。大括号{{ }}用于视图中。由于JavaScript内容通常在视图中调用,因此以这种方式执行是合法的。

URL::action部分在文档中描述如下:

  

要生成控制器操作的URL,我们可以使用URL :: action   方法或动作帮助方法:

$url = URL::action('FooController@method');

$url = action('FooController@method');

所以模板系统和组合的组合; URL::action让我们有可能这样做:

$("#category").keyup(function () {
    $.ajax({
        url: "{{URL::action('CategoryController@categoryAjaxRequest')}}",
        type: "get",
        data: {
            category: $("#category").val()
        },
        success: function (response) {
            $("#category_suggestion").html(response);
        }
    });
});