0

同じクラス「ip」をajax経由で共有する複数のdiv(簡単にするために3つに制限)のコンテンツ(IPv4アドレス)を通過して、対応する国を返すphpファイルに送信しようとしていますが、問題が発生していますそれらのそれぞれの良い個別の値を取得します。Firebug は、値が次々に正しく送信されることを示していますが、3 つの div すべての最後の IP の IP 解決しか取得できません。

<!DOCTYPE html>
<head>
    <meta charset="utf-8" />
    <title>form test</title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
</head>
<body>
    <form name="form" action="">
        <div class="inp"><input type="checkbox" /><div class="ip">57.20.123.87</div></div>
        <div class="inp"><input type="checkbox" /><div class="ip">54.220.223.47</div></div>
        <div class="inp"><input type="checkbox" /><div class="ip">37.120.23.97</div></div>
    </form>
    <script type="text/javascript">
        $(document).ready(function(){
            $(".ip").each(function(i) {
                var ipfromT = new Array();
                ipfromT = $(this).html();
                $.ajax({
                    url: 'http://localhost/ic/jsonquery.php',
                    data: "ipfromT="+ipfromT,
                    dataType: 'json',
                    success: function(data) {
                        var ipfield = data[0];
                        var iprevealed = data[1];
                        $("[class='ip']").html("<b>sent IP:</b> "+ipfield+" <b>Location:</b> "+iprevealed);
                        }
                });
            });
        }); 
    </script>
</body>
</html>

さまざまな値を持つ配列を作成するために数時間検索し、それらを ajax 経由で一度に送信してから元に戻しましたが、それを行うことができないので、アドバイス/ヘルプ/提案を求めます。

どうもありがとうございました

4

1 に答える 1

1

コールバックで使用しない$('[class="ip"]')でくださいsuccess。代わりに、現在の反復要素にキャッシュされた var を使用してください。

$(document).ready(function(){
    $(".ip").each(function(i) {
        var ipfromT = new Array();
        ipfromT = $(this).html();
        var $ip = $(this);

        $.ajax({
            url: 'http://localhost/ic/jsonquery.php',
            data: "ipfromT="+ipfromT,
            dataType: 'json',
            success: function(data) {
                var ipfield = data[0];
                var iprevealed = data[1];
                $ip.html("<b>sent IP:</b> "+ipfield+" <b>Location:</b> "+iprevealed);
            }
        });
    });
});

$('[class="ip"]')Ajaxで取得しようとしているものだけでなく、ドキュメント上で「ip」のクラスを持つ要素のすべての同時発生を取得しています。そのため、繰り返し処理では、現在作業中のものを取得し、それを Ajax リクエストのコールバック関数で使用する必要があります。

于 2012-04-16T15:55:51.643 に答える