1

以下代码将成功捕获客户端 IP 地址

var clientIP;
$.getJSON("http://jsonip.appspot.com?callback=?",
function (data) {
    clientIP = data.ip;
});

$("form").submit(function () {
alert(clientIP);
});

但是,这会在表单加载时捕获 IP 地址。是否可以对其进行重构,以便仅在用户按下 sumbit 时调用 JSON 函数?例如。

$("form").submit(function () {
      var clientIP = <somehow call getJSON function to get client ip>;
alert(clientIP);
});
4

3 回答 3

1

您需要等待响应:

$("form").submit(function () {
    $.getJSON("http://jsonip.appspot.com?callback=?",
        function (data) {
            var clientIP = data.ip;
            alert(clientIP);
       });
       // prevent form submission
        return false;
});
于 2012-06-12T16:32:26.783 回答
0
var clientIP;

function getIP(form) {
  $.getJSON("http://jsonip.appspot.com?callback=?",
  function (data) {
    clientIP = data.ip;
    alert(clientIP);
  });
}


$("form").submit(function (e) {
  e.preventDefault(); // prevent default submission
  getIP(this);
});

笔记

我将表单传递给getIP(),以便您可以在该函数中提交表单。

于 2012-06-12T16:32:50.723 回答
0
   var clientIP; // declare it global otherwise you wont be able to use it from outside.
    $("form").submit(function () {
       $.getJSON("http://jsonip.appspot.com?callback=?",
        function (data) {
            clientIP = data.ip;
       });
    return false; // return false so the form doesnt actually submit
    });
于 2012-06-12T16:33:41.197 回答