2017-03-07 127 views
0

我试图填写城市名称,如果不emtpy提交表单之前返回结果。我有这个代码来获取用户所在的城市。等待地理位置在提交表格

var form = $("form.js-reservation-form"); 
    form.submit(function(e) {   
      $.getJSON("http://www.geoplugin.net/json.gp?jsoncallback=?", function(data) { 
       console.log(data.geoplugin_city); 
       $("input.geocity").val(data.geoplugin_city);  
      }); 
.... 
rest of code .... 
}); 

的问题是,地理编码返回值之前提交表单。我如何更改代码先等待geoplugin返回值,然后运行其余代码?

+0

提交内部回拨功能 –

+0

异步请求表单不等待响应,并开始执行下一个语句 –

回答

0

创建拨弄展示它是如何工作的。由于限制我不能查询您JSON,所以我模拟它,以显示它是如何工作 - https://jsfiddle.net/skyr9999/w5tun6nz/

这里是HTML:

<form class="js-reservation-form"> 
    <input class="geocity" type="input"> 
    <button type="button" id="submit-form">Submit</button> 
</form> 

和js

$(".js-reservation-form").click(function (e) { 
    $.ajax({ 
     type: "POST", 
     url: "/echo/json/", 
     data: {"json": JSON.stringify({"geoplugin_city": "Magadan"})}, 
     cache: false, 
     success: function (data) { 
      console.log(data.geoplugin_city); 
      $("input.geocity").val(data.geoplugin_city); 
      //$('form.js-reservation-form').submit(); 

     }}); 
}); 

那么它是如何工作 - 首先有只是普通的按钮和事件,关于它结合,那么它做AJAX查询来获取JSON,你可以用你的网址,摆脱data如果它不要求。在JSON加载后设置的值为input.geocity和jquery提交的表单。

我评论提交代码,因为它会导致快速的错误,在你的代码,你必须去掉这一字符串//$('form.js-reservation-form').submit();