调用函数在从ajax调用返回的数据之前执行

时间:2016-07-25 14:09:03

标签: javascript jquery ajax

这是我的剧本:

var ckit = (function($){
var data = [{
      "option": "com_easysocial",
      "userId": localStorage.getItem("ckuser"),
      "layout": "getSample",
      "view": "conversations",
      "format": "json",
      "limit": 1
    }];

var Data = 'default';
function ajaxCall(opt, arg){

    // for(var i=0; i< opt.length; i++){
        var opt = jQuery.extend({}, data[0], opt[0]);
        this.Data = opt['layout'];
        var str = opt['layout'].replace("get", "");
        str = str.toLowerCase();
        token = window.es.token;
        opt[token] = "1";
        var res;
        jQuery.ajax({

           method: "POST",
           url: localStorage.getItem("root")+"/index.php",
           "data": opt,
           error: function() {
             alert('error');
           },  
           success: function(result) {
            console.debug(result);
           var data = result.data[str];
           return data;

           }//end success
       });//end ajax


  // }
}
     return {
        open: function(){
            $('[data-ckit-full]').removeClass("is-hidden");
            $('[data-ckit-compact]').addClass("is-hidden");
            $('body').addClass("disable-scrolling");
           // $("html").css({"height": "100%", "overflow": "hidden"});
            $("body").css({"position": "relative"});
        },
        render: function(opt){
                if(typeof opt === 'object')
                {
                    var list = {
                       data : [opt]
                    }

                    var display = ajaxCall.bind (null, ajaxCall.call (list, list.data));
                     console.debug(display);


                }
        }

         };//end return
    })(jQuery);

这就是我在firefox中的控制台中看到的

bound ajaxCall()//for  console.debug(display);

Object { data={...}}//console.debug(result);

我试图做的就是将对象从ajax成功函数传递给调用显示变量。但是它没有返回对象。而且在ajax之前首先执行了对ajax调用的绑定调用。

这样做的正确方法是什么?

0 个答案:

没有答案