如何使用$ .when完成序列化jQuery请求

时间:2013-04-11 07:57:00

标签: jquery callback

我在jQuery中对此进行了编码。 但是回调并没有按我想要的顺序调用(在分支中的调用之前调用done分支中的回调)。 如果我将internalOrderRequestrejectionReasonRequest定义为简单变量(instea od functions),那么一切正常。 有人可以提出建议吗?

                        var self = this;
                    debugger;
                    var internalOrderRequest = function() {
                        $
                                .ajax({
                                    type : "GET",
                                    url : internalOrderServiceURL,
                                    contentType : "application/json; charset=utf-8",
                                    dataType : "json",
                                    success : self.retrieveInternalOrderSuccess,
                                    error : self.retrieveInternalOrderError
                                })
                    };

                    var rejectionReasonRequest = function() {


                        $
                                .ajax({
                                    type : "GET",
                                    url : rejectionReasonServiceURL,
                                    contentType : "application/json; charset=utf-8",
                                    dataType : "json",
                                    success : self.retrieveRejectionReasonSuccess,
                                    error : self.retrieveRejectionReasonError
                                })
                    }



                        $
                                .when(internalOrderRequest(),
                                        rejectionReasonRequest())
                                .done(
                                        function(result1, result2) {
                                            $
                                                    .ajax({
                                                        type : "GET",
                                                        url : salesOrderInfoServiceURL,
                                                        contentType : "application/json; charset=utf-8",
                                                        dataType : "json",
                                                        success : function(
                                                                oResult) {
                                                            self
                                                                    .retrieveServiceItemSuccess(oResult);
                                                        },
                                                        error : function(
                                                                oResult) {
                                                            self
                                                                    .retrieveServiceItemError(oResult);
                                                        },
                                                    })
                                        });

1 个答案:

答案 0 :(得分:1)

根据 jQuery.when()文档,when()期望延迟对象,但是你没有在internalOrderRequest()和rejectionReasonRequest()方法中返回任何对象。来自 jQuery.ajax()文档:

  

jQuery 1.5中$ .ajax()返回的jqXHR对象实现了   Promise接口,为它们提供所有属性,方法和   Promise的行为(有关详细信息,请参阅Deferred对象)。

只需在您的方法中返回您的ajax请求即可。