我有一个ajax,当点击一个复选框时会触发它,它实际上是一个查询字符串发送到PHP脚本,然后返回相关的HTML,但是,如果我选择一个选择它工作正常,如果我然后选择另一个复选框以及以前我没有得到任何活动,甚至没有任何萤火虫的错误,这是非常好奇的,有没有人有任何想法?
//Location AJAX
//var dataObject = new Object();
var selected = new Array();
//alert(selected);
$('#areas input.radio').change(function(){ // will trigger when the checked status changes
var checked = $(this).attr("checked"); // will return "checked" or false I think.
// Do whatever request you like with the checked status
if(checked == true) {
//selected.join('&');
selected = $('input:checked').map(function() {
return $(this).attr('name')+"="+$(this).val();
}).get();
getQuery = selected.join('&')+"&location_submit=Next";
alert(getQuery);
$.ajax({
type:"POST",
url:"/search/location",
data: getQuery,
success:function(data){
//alert(getQuery);
//console.log(data);
$('body.secEmp').html(data);
}
});
} else {
//do something to remove the content here
alert($(this).attr('name'));
}
});
答案 0 :(得分:3)
我看到你正在使用变量checked = $(this).attr(“checked”);我认为这可能是一个问题,因为checked是JS原生的标准JS属性。您可以比较正常检查元素并查看它是真还是假。我首先要更改变量的名称,然后从那里继续。
可能发生的另一件事是你可能正在失去你的监听器,这可能是由你选择的变量引起的。您无需在侦听器外声明选定内容。只需在设置时将其声明为内部。
如果这没有帮助,提供一些标记将有助于调试此问题,因为这里似乎有很多事情发生。
祝你好运。答案 1 :(得分:0)
我发现,因为我的ajax在成功的新页面中加载,所以动作没有放在元素上,因为它们只是在DOM上加载一次,我将所有脚本移动到一个函数中并调用它DOM现在准备就绪,效果很好。