-1

我正在尝试构建一个非常简单的管理区域,管理员可以在其中批准或拒绝图像/链接广告,然后再将它们显示在网站上。他们将使用包含“接受”或“拒绝”ID 的单选按钮,其值为广告的唯一 ID 号。

我想我会给这个非常方便.each()的函数一个尝试,将所有接受和拒绝的广告放入它们自己的数组中,然后让 PHP 相应地处理它们中的每一个。

但是,在提交表单时,我Callback is undefined从 FireBug 控制台收到错误消息。

示例 HTML(由 PHP 输出):

<li><input type="radio" name="' . $a['adID'] . '" id="accept" value="' . $a['adID'] . '" /> Approve</li>
<li><input type="radio" name="' . $a['adID'] . '" id="reject" value="' . $a['adID'] . '" /> Reject</li>

  • ...这是jQuery代码:

    $(document).ready(function() {
    
            $("#save").click(function() {
                var arrayOfAccepted = new Array();
                var arrayOfRejected = new Array();
    
                $.each("input:radio[id='accept']:checked"), function() {
                    arrayOfAccepted.push($(this).val());
                }
    
                $.each("input:radio[id='reject']:checked"), function() {
                    arrayOfRejected.push($(this).val());
                }
    
                    $.ajax({
                    type: 'POST',
                    url: 'exe/fn.moderateAds.php',
                    data: {acceptedAds : arrayOfAccepted, rejectedAds : arrayOfRejected},
                    success: function() {
                    alert("Changes saved successfully.");
                    }
                    });
                });
            });
    

    acceptedAds/rejectedAds在数据参数中将是我希望 PHP 在查找数组时识别数组的变量。

    语法错误,还是我通过 AJAX 函数传递数据的方式有问题?

  • 4

    1 回答 1

    3

    您的右括号位于错误的位置,您不是在选择元素,而是在迭代一个字符串。此外,您的选择器有点过于具体。

    $.each("input:radio[id='accept']:checked"), function() {
        arrayOfAccepted.push($(this).val());
    }
    

    应该:

    $("input:radio[id='accept']:checked").each(function() {
        arrayOfAccepted.push($(this).val());
    });
    

    另一个也一样。现在,它被视为一个逗号运算符,其左侧操作数为$.each("input:radio[id='accept']:checked")(因此您会看到错误)和一个从未使用过的匿名函数的右侧操作数。

    代码提示:使用[]代替new Array().

    于 2012-07-24T00:33:09.440 回答