我正在从名为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”。
答案 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);
}
});
});