-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/ rejectedAdsdata パラメーターの変数は、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")(したがって表示されるエラー) と、使用されていない無名関数の右側のオペランドを持つ 1 つのコンマ演算子として扱われています。

    コードのヒント:[]の代わりに使用しnew Array()ます。

    于 2012-07-24T00:33:09.440 に答える