如何将$ .ajax对象传递给另一个函数?

如何将$ .ajax对象传递给另一个函数?

问题描述:

,此功能将使用通用的AJAX CALSS:

function f_AjaxFunction(_param) { 
    var objectWillReturn; 
    $.ajax({ 
     type: "POST", 
     contentType: "application/json; charset=utf-8", 
     url: 'WS/wsGenral.asmx/f_QueryAndGetResultAsJson', 
     data: "{_sParam:'" + _param + "'}", 
     dataType: "json", 
     success: function(data) { 
      var txt = ""; 
      try { 
       objectWillReturn = data; 
      } 
      catch (err) { 
       alert(err.description); 
      } 
     } 
    }); 
    return objectWillReturn ; 
} 

此功能调用其它功能也就是上面:

function f_HavaDurumu(_paramm) { 
     var obj; 
     obj = f_AjaxFunction(_paramm); 
     $("#spanShow").html(obj.d); 
    } 

你将不得不使用回调,因为调用异步地提出:

function f_AjaxFunction(_param, callback) { 
    $.ajax({ 
     type: "POST", 
     contentType: "application/json; charset=utf-8", 
     url: 'WS/wsGenral.asmx/f_QueryAndGetResultAsJson', 
     data: "{_sParam:'" + _param + "'}", 
     dataType: "json", 
     success: function(data) { 
      var txt = ""; 
      try { 
       if($.isFunction(callback(data))){ 
       callback(data); 
       } 
      } 
      catch (err) { 
       alert(err.description); 
      } 
     } 
    }); 
} 

function f_HavaDurumu(_paramm) { 
    f_AjaxFunction(_paramm, function(data){ 
     $("#spanShow").html(data.d); 
    }); 
} 

我想不出你的代码在Try块中会导致错误的情况,但是我把它留在了因为你在那里首先。

UPDATE

为了进一步说明这一点:

function get_ajax(){ 
    var ran = false; 
    $.ajax({ 'url':'/some/url', success: function(data){ 
     ran = true; 
    }); 
    return ran; 
} 

alert(get_ajax()); // alerts "false" 

正是在这样的顺序运行:

  1. 设置runfalse
  2. 开始AJAX请求
  3. 返回run
  4. AJAX完成,设置run为true

但是,如果使用回调,你可以保留的东西,以便让他们执行这样的:

  1. 开始AJAX请求
  2. AJAX完成后,用返回数据执行回调
+0

+1不知道'$ .isFunction'。 – 2010-01-16 17:05:37

+0

如何将返回对象设置为新调用该函数的对象?我不能设置=> var newObj = f_AjaxFunction(“hihi”); – uzay95 2010-01-16 17:05:41

+0

不,该函数在调用'$ .ajax'之后立即返回,因为调用是异步的并被从当前执行队列中取出。其余的调用必须在回调事件中处理,否则它将在AJAX调用返回之前执行*。合理? – 2010-01-16 17:09:00

正如Doug所说,您会需要使用异步回调。在数据可用之前,f_AjaxFunction正在返回。

另一种选择是Javascript Strands

+0

+1 Cool链接...从来没有看过股! – 2010-01-16 17:31:35