返回数据后,$ .getJSON将不会运行函数

时间:2013-12-19 01:40:19

标签: javascript jquery

我无法让用户IP继续使用下一个功能,因为每次拨打$.getJSON它都会跳过我的功能。我确定返回的JSON很好,因为当我运行此处显示的代码时:

<script type="application/javascript">
$.getJSON("http://www.telize.com/jsonip?callback=?",
    function(json) {
        document.write("My IP address is : ", json.ip);
    }
);
</script>

IP完全按照您的预期写入屏幕。这是我最近的尝试:

<script type="application/javascript">

function verifyRecaptchaAnswer() {
  var privateKey = 'privateKey'; 
  var challengeValue = $('#recaptcha_challenge_field').val();
  var responseValue = "manual_challenge" ;
  var userIP = $('#hiddenField').val();
  $.post("http://www.google.com/recaptcha/api/verify",
    { privatekey: privateKey, remoteip: userIP, challenge: challengeValue, response: responseValue },
    function(data) {
      return data;
    }
  ); 
}

$(document).ready(function() {

  var hiddenField = document.createElement('input');
  hiddenField.setAttribute("name", "ipHolder")
  hiddenField.setAttribute("type", "hidden");
  hiddenField.setAttribute("id", "hiddenField");

  $.getJSON("http://www.telize.com/jsonip?callback=?",
    function(json) {
      hiddenField.setAttribute("value", json.ip);
    }
  );

  $('#submit').on("click", function(){
    event.preventDefault();
    verifyRecaptchaAnswer();
  });
});
</script>

我已经在function(json){}块中尝试了太阳下的一切,但没有一个能够正常工作。当然,除了网站上显示的示例http://www.telize.com/,这是第一个发布的代码块。我找到这个网站后发现了这个网站:How to get client IP address using jQuery,看起来像是一样的东西。我还没有开始测试verifyRecaptchaAnswer功能,但这就是我想要的用户IP。

1 个答案:

答案 0 :(得分:2)

我认为你错过了这一行:

document.body.appendChild(hiddenField);