在ajax调用完成后执行某些操作

时间:2014-12-16 20:09:47

标签: javascript jquery ajax

我正在使用Edmunds API SDK来检索我的某个项目的车辆信息,并且我有一个功能,一旦有了车辆图像就会显示结果。因此,在ajax调用之后显示结果以获取图像。我有这样的ajax调用设置:

self.getCarPic = function() {    
            // Optional parameters
            var options = { "styleId" : $options.val() };

            // Callback function to be called when the API response is returned
            function success(res) {

                for(var i in res){
                    // Looking for the front view shot of the car
                    if (res[i].shotTypeAbbreviation === "FQ") {
                        url = "http://media.ed.edmunds-media.com" + res[i].photoSrcs[res[i].photoSrcs.length-1];
                        break;
                    }
                    // If its not available, get whatever they have on the api
                    else {
                       url = "http://media.ed.edmunds-media.com" + res[0].photoSrcs[res[i].photoSrcs.length-1];
                    }
                }
                // If there is no image at all just return the default car pic
                if (! url) {
                       url = defaultPic;
                }
            }
            // If an error occurs just set the url to default car pic
            function fail(data) {
                 url = defaultPic;
            }

            // Fire the API call
            res.api('/v1/api/vehiclephoto/service/findphotosbystyleid', options, success, fail);
        };

我还有其他功能设置来显示结果:

    self.getResult = function() {
                var x = self.getCarPic;

                $.when(x).done(function(){
                   // display result code 
                }
    };

这似乎不起作用,因为显示功能在ajax调用完成之前执行。我知道getCarPic应该是一个promise对象,但是当我使用Edmunds SDK时我该怎么做呢?我不能使用像ajaxComplete这样的全局函数,因为我不希望它干扰我的其他ajax调用。

1 个答案:

答案 0 :(得分:1)

尝试

$.ajax({url: '/'}).done(function(data) {});