2010-01-16 176 views
0

,此功能將使用通用的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); 
    } 

回答

3

你將不得不使用回調,因爲調用異步地提出:

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

0

正如Doug所說,您會需要使用異步回調。在數據可用之前,f_AjaxFunction正在返回。

另一種選擇是Javascript Strands

+0

+1 Cool鏈接...從來沒有看過股! – 2010-01-16 17:31:35

相關問題