event.preventDefault()是你的朋友在这里。在完成实际的ajax请求之前,将提交表单。您需要停止表单提交,然后执行ajax,然后进行表单提交。如果您没有在其中停靠,它将一直运行,唯一有时间要做的就是提交表单。
$(document).ready(function () { $("form").submit(function (event) {// prevent default form submit event.preventDefault(); var postpre = $.trim($("#Postpre").val()); if (postpre.length === 0) { return false; } var baseUrl = "http://dev.virtualearth.net/REST/v1/Locations/UK/"; var apiKey = "myKey"; var url = baseUrl + postpre + "?key=" + apiKey + "&jsonp=?"; $.getJSON(url, function (result) { if (result.resourceSets[0].estimatedTotal > 0) { var location = result.resourceSets[0].resources[0].point.coordinates; $("#latitude").val(location[0]); $("#longitude").val(location[1]); $("form").submit(); } }); }); });但是,当您将放在
preventDefault那里时,您将无法继续提交表单
$('form').submit();。您需要将其作为ajax请求发送,或为定义一个条件preventDefault。
大概是这样的:
$(document).ready(function () { var submitForReal = false; $("form").submit(function (event) { var postpre = $.trim($("#Postpre").val()); if (postpre.length === 0) { return false; } // prevent default form submit if(!submitForReal){ event.preventDefault(); }else{ var baseUrl = "http://dev.virtualearth.net/REST/v1/Locations/UK/"; var apiKey = "myKey"; var url = baseUrl + postpre + "?key=" + apiKey + "&jsonp=?"; $.getJSON(url, function (result) { if (result.resourceSets[0].estimatedTotal > 0) { var location = result.resourceSets[0].resources[0].point.coordinates; $("#latitude").val(location[0]); $("#longitude").val(location[1]); submitForReal = true; $("form").submit(); } }); } }); });


