我的AJAX只发射一次,

时间:2010-04-12 15:30:19

标签: javascript ajax jquery

我有一个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'));
    }
});

2 个答案:

答案 0 :(得分:3)

我看到你正在使用变量checked = $(this).attr(“checked”);我认为这可能是一个问题,因为checked是JS原生的标准JS属性。您可以比较正常检查元素并查看它是真还是假。我首先要更改变量的名称,然后从那里继续。

可能发生的另一件事是你可能正在失去你的监听器,这可能是由你选择的变量引起的。您无需在侦听器外声明选定内容。只需在设置时将其声明为内部。

如果这没有帮助,提供一些标记将有助于调试此问题,因为这里似乎有很多事情发生。

祝你好运。

答案 1 :(得分:0)

我发现,因为我的ajax在成功的新页面中加载,所以动作没有放在元素上,因为它们只是在DOM上加载一次,我将所有脚本移动到一个函数中并调用它DOM现在准备就绪,效果很好。