laravel 4中没有ajax响应

No ajax response in laravel 4

本文关键字:ajax 响应 laravel      更新时间:2023-09-26

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

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

这是我使用的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"。

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

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);
        }
    });
});