是否可以在提交函数中调用json函数?

时间:2012-06-12 16:29:33

标签: jquery json

以下代码将成功捕获客户端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);
});

3 个答案:

答案 0 :(得分:1)

您需要等待回复:

$("form").submit(function () {
    $.getJSON("http://jsonip.appspot.com?callback=?",
        function (data) {
            var clientIP = data.ip;
            alert(clientIP);
       });
       // prevent form submission
        return false;
});

答案 1 :(得分: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(),以便您可以在该功能中提交表单。

答案 2 :(得分: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
    });