0

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

我有一个 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 语句来实现这一点,但这似乎也不起作用。我尝试使用dataAJAX 调用部分中的语句,一个 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/else 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();

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

回答

// 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();
4

1 回答 1

1

没有什么像

myArray.size()

相反,您必须使用

myArray.length

所以你的 if 语句应该是

if(myArray.length > 1) {


}

/修正/

因为您正在检查数组值是否 === 1,所以您的条件应该是 .length === 1

所以像这样

 if( myArray.length === 1) {


    } else {

}

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

于 2013-10-09T17:47:15.160 回答