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 に答える