2014-11-03 72 views
-2

我目前正在创建一个查询控制器并返回相应响应的AJAX调用。唯一的问题是响应会以未定义的方式返回到AJAX cal的异步本质。我不确定我如何告诉功能等待响应。这里是我的代码:AJAX响应未定义。

查看:

jQuery(document).on("click", "#payment .membership", function(e) { 
     e.preventDefault(); 
     var price = SignUpObject.membershipClick(jQuery(this).attr("data-membership-id")); 
     alert(price); 
    }); 

JavaScript库功能(这是一个对象中):

var SignUpObject = { 
    membershipClick : function(membershipDetailsId) {   
     jQuery.ajax({ 
      type  : 'POST', 
      dataType : 'json',    
      url  : 'api/membership-choice', 
      data  : 'membershipid=' + membershipDetailsId 
     }).done(function(response) { 
      return response 
     }); 
    } 
} 

的AJAX调用被调用返回正确的响应回去,这样PHP我不需要在这里包含它们。任何人都可以告诉我如何使AJAX调用等待响应? 感谢

+0

可能重复[如何从Ajax调用返回响应?](http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call) – 2014-11-03 15:24:03

回答

0

你有两个问题:

1)您正在尝试同步调用响应,(异步)请求已完成之前。

2)membershipClick不返回请求对象,所以你没有办法挂钩到它的完成回调。

要解决:

1)更改线路

jQuery.ajax({... 

return jQuery.ajax({ 

2)更改线路

alert(price); 

price.done(function(response) { alert(response); }); 

然而,可变price将得到更好的名字类似price_request,因为它存储的要求,而不是实际的价格参考(这是响应。)

+0

辉煌。谢谢 – devoncrazylegs 2014-11-03 13:45:48

0

变化

}).done(function(response) { 
return response 

});

对于:

}), success: function(response) { 
return response 

};

+0

这是不正确的。这不仅是一个语法错误 - 它完全忽略了潜在的问题。 – 2014-11-03 20:26:35