我目前正在研究jquery,我希望使用ajax从API调用中获取信息,我在模糊函数上执行此操作,该函数从输入获取值,然后调用结束点,但是ajax呼叫保持在状态1,我不确切知道原因。
这就是我这样做的方式。
(function ($) {
$(document).ready(function () {
$(document).on("change","#calc_shipping_method",function(){
$('.rp_calc_shipping').trigger('click');
});
$('.shipping_postcode input,.shipping_state input').blur(function () {
$(".loaderimage").show();
element=$(this);
var datastring = $(this).closest(".woocommerce-shipping-calculator").serialize();
if($("input.variation_id").length>0){
datastring=datastring+"&variation_id="+$("input.variation_id").val();
}
if($("input[name=quantity]").length>0){
datastring=datastring+"¤t_qty="+$("input[name=quantity]").val();
}
var zip = $("#calc_shipping_postcode").val();
// THIS DOENS'T WORK
var state = $.ajax({
type: "GET",
crossOrigin: true,
url: "http://api.postmon.com.br/v1/cep/"+zip,
dataType: 'json',
success: function () {
alert ("hello world");
}
});
state = state['responseJSON']['estado'];
//03134-001
datastring.replace("calc_shipping_state=","calc_shipping_state="+state);
$.ajax({
type: "POST",
url: rp_ajax_url+"?action=update_shipping_method",
data: datastring,
success: function (data) {
$(".loaderimage").hide();
element.parent().parent().find('.shippingmethod_container').html(data);
}
});
return false;
});
});})(jQuery);
问题是ajax上的警报有效,但对象的readystate是1。
答案 0 :(得分:0)
添加async: false
,
var state = $.ajax({
type: "GET",
crossOrigin: true,
url: "http://api.postmon.com.br/v1/cep/"+zip,
dataType: 'json',
async: false
});