0

我正在尝试通过ajax将共享同一类“ip”的多个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"]')您在文档上获得所有具有“ip”类的元素,而不仅仅是您试图通过 Ajax 获得的元素。这就是为什么在迭代中必须获取当前正在使用的迭代,并将其用于 Ajax 请求的回调函数。

于 2012-04-16T15:55:51.643 回答