我在Yii中遇到了一个Ajax调用"bug"。问题是,我必须通过复选框进行搜索,这些复选框在点击搜索按钮后存储在SESSION中。
之后,关键字插入SESSION,我想将它们打印在标记云中。(角落里有一个十字架->删除这个标签)。这些标签的删除由ajax调用处理:
$(".tags a").click(function(e) {
e.preventDefault();
var class1 = $(this).attr("class");
var id = $(this).attr("id");
$("#checkbox__"+id).removeAttr("checked");
jQuery.ajax({
url: "recipe/removeFromSession",
type: "POST",
data: "id=" + class1+"&rcp="+id,
dataType: "json",
"success": function(data){
location.reload();
},
"error": function(xhr, status, error) {
var err = xhr.responseText;
alert(xhr.status);
},
"cache" : false,
});
});
它调用removeFromSession操作:
public function actionRemoveFromSession() {
$remove = intval($_POST['id']);
unset($_SESSION['searchItems']['category'][$remove]);
unset($_SESSION['recipeSearch']['category'][$_POST['rcp']]);
echo json_encode($_SESSION);
}
问题是它没有取消设置值。它仍在会话中。知道吗?(抱歉语法错误)
感谢
你可以试试这个:
设置会话:
Yii::app()->session['searchItems']['category'][$keyword] = "Any string";
取消设置会话:
unset(Yii::app()->session['searchItems']['category'][$remove]);