在选择一秒钟的选项后,我正在努力刷新列表。 我有这个清单
<select id="ArticleShopId">
<option>Some options</option>
<option>Some options 2</option>
<option>Some options 3</option>
</select>
我有个好意思
<select id="ArticleCategoryId">
<option></option>
<option></option>
<option></option>
<option></option>
</select>
当我选择第一个选项时,ajax应该加载表Shop
并更新第二个选择
我创建了一个名为admin_refreshCategoriesAjax
function admin_refreshCategoriesAjax($id = null){
$this->loadModel('Category');
// Le list recupere la valeur des IDs et cherche un champs qui a la valeur "name"
$categories = $this->Category->find('list',array('order'=>'name ASC','conditions'=>array('shop_id'=>$id)));
//return "toto";
return $categories;
#return json_encode($categories);
}
我希望创建一个ajax代码来完成它。然后我尝试着它
$('select#ArticleShopId').on('change',function(){
//alert($(this).val());
//alert("/articles/refreshCategoriesAjax/"+$(this).val());
$.ajax({
type: "GET",
url: "<?php echo $this->Html->url(array('controller' => 'articles', 'action' => 'refreshCategoriesAjax', 'admin' => true)); ?>",
data: "id="+$(this).val(),
success: function(msg){
console.log(msg);
}
})
})
但是msg没有返回带有$ categories值的数组。 如何正确调用我的操作admin_refreshCategoriesAjax并使用$ categories的值更新我的第二个选择?
非常感谢你的帮助,我花了半天时间:o(注意: 如果我在我的网址中输入此内容
http://localhost:8888/web/admin/articles/refreshCategoriesAjax/1
它让我很好地回想起我正在寻找的阵列。如果我用2换1,它会返回我的其他值。然后这部分接缝工作很好
答案 0 :(得分:0)
我相信你的问题是在你的函数admin_refreshCategoriesAjax中你返回数组而不是做一些实际上将它输出到网页的东西。您可以echo json_encode($categories);
获取一些可以使用的输出,而无需为该操作明确创建视图。
答案 1 :(得分:0)
您可以在id
中找到一个ID,而不是在参数中找到$this->request->data
。要使您的ajax请求安全,请在视图文件中使用以下代码:
$('select#ArticleShopId').on('change',function(){
//alert($(this).val());
//alert("/articles/refreshCategoriesAjax/"+$(this).val());
$.ajax({
type: "POST",
url: "<?php echo $this->Html->url(array('controller' => 'articles', 'action' => 'refreshCategoriesAjax', 'admin' => true)); ?>",
data: {id:$(this).val()},
success: function(msg){
console.log(msg);
}
});
});
以下代码进入您的控制器:
function admin_refreshCategoriesAjax(){
$categories = array();
if($this->request->is('post'))
{
$id = $this->request->data['id'];
$this->loadModel('Category');
// Le list recupere la valeur des IDs et cherche un champs qui a la valeur "name"
$categories = $this->Category->find('list',array('order'=>'name ASC','conditions'=>array('shop_id'=>$id)));
//return "toto";
}
return $categories;
#return json_encode($categories);
}
现在要在下拉列表中填充数据,请从控制器返回json_encode($categories)
。并在您的ajax成功方法中使用var result = $.parseJSON(msg);
。