如果只选中一个,则忽略AJAX调用的复选框数组

时间:2013-10-09 16:32:40

标签: ajax arrays jquery checkbox

抱歉,我很快就会再次发帖,但我确实尝试了很多不同的选择,希望它能奏效。

我有一个jQuery / AJAX表单,它将根据用户输入创建数组。然后,AJAX会将值发送到我的PHP脚本,以从我的数据库中提取和放置数据。

我遇到的问题是当我只选中一个框时,AJAX会创建一个空白结果

如果您选择2个或更多值,它可以100%正常工作。我想也许是由一个以0或其他奇数因子开头的数组引起的。我还检查了我的控制台,它正在向我的PHP页面提交正确的值。

单一价值

  

XHR完成加载:“http://healthbenefitsohio.com/expertise.php?expertise%5B%5D=Ancillary”。

两个及以上的值

  

XHR完成加载:“http://healthbenefitsohio.com/expertise.php?expertise%5B%5D=Ancillary&expertise%5B%5D=SmallGroup”。

然后我决定也许我可以通过使用if语句实现这一点,这似乎也没有效果。我尝试使用AJAX调用的data部分中的语句,一个if / else语句,每个语句都有自己的AJAX调用,我尝试将if语句转换为变量以传递给数据。

如果声明

if(myArray.size() > 0) {
    //Function goes here
else {
    //Function goes here
}

当前适用于两个及以上值的AJAX调用

// Agent search ajax/jQuery
function agentAJAX() {
    $('input').on('click', function() { //Pulls data based on radial input
        var myArray = [];
        var value = $(this).val();

        $(".formC input:checkbox:checked").each(function(){ 
            myArray.push($(this).val()); 
        });
        $.ajax({
            type: "POST",
            datatype: "html",
            data: {
                expertise: myArray
            },
            url: "expertise.php",
            success: function (data) {
                $("#bodyA").html(data);
            }
        });
    });
}

agentAJAX();

IF /其他AJAX电话

// Agent search ajax/jQuery
function agentAJAX() {
    $('input').on('click', function() { //Pulls data based on radial input
        var myArray = [];
        var value = $(this).val();

        $(".formC input:checkbox:checked").each(function(){ 
            myArray.push($(this).val()); 
        });
        if(myArray.size() > 1) {
            $.ajax({
                type: "POST",
                datatype: "html",
                data: {
                    expertise: myArray
                },
                url: "expertise.php",
                success: function (data) {
                    $("#bodyA").html(data);
                }
            });
        }
        else {
            $.ajax({
                type: "POST",
                datatype: "html",
                data: {
                    expertise: value
                },
                url: "expertise.php",
                success: function (data) {
                    $("#bodyA").html(data);
                }
            });
        }
    });
}

agentAJAX();

如果您需要更多信息或代码,请告诉我,我会在午餐后上传。

ANSWER

// Agent search ajax/jQuery
function agentAJAX() {
    $('input').on('click', function() { //Pulls data based on radial input
        var myArray = [];
        var value = $(this).val();

        $(".formC input:checkbox:checked").each(function(){ 
            myArray.push($(this).val()); 
        });
        if(myArray.length === 1) {
            $.ajax({
                type: "POST",
                datatype: "html",
                data: {
                    expertise: value
                },
                url: "expertise.php",
                success: function (data) {
                    $("#bodyA").html(data);
                }
            });
        }
        else {
            $.ajax({
                type: "POST",
                datatype: "html",
                data: {
                    expertise: myArray
                },
                url: "expertise.php",
                success: function (data) {
                    $("#bodyA").html(data);
                }
            });
        }
    });
}

agentAJAX();

1 个答案:

答案 0 :(得分:1)

没有像

那样的东西
  

myArray.size()

而你必须使用

  

myArray.length

所以你的if语句应该是

if(myArray.length > 1) {


}

/ <强>校正 /

因为你正在检查数组值=== 1你的条件应该是.length === 1

这样的事情

 if( myArray.length === 1) {


    } else {

}

您还必须考虑清理代码。只需使用一个函数并将数据作为参数传递,您只需使用一个$ .ajax方法而不是复制。