2014-05-07 71 views
1

我有一個函數,它使ajax請求和返回和3個值的數組。 該功能後來被稱爲在另一個函數,則出現以下錯誤:函數返回數組到另一個函數>未捕獲類型錯誤

Uncaught TypeError: undefined is not a function

當我改變的第一行到功能兩到:array = one();它的工作原理完全有一次,每隔函數調用followiing結束錯誤:

Uncaught TypeError: object is not a function

任何人都可以請解釋我,這是怎麼來到這兩個錯誤!?


我的代碼:

function one() { 
     var result = null; 
     var scriptUrl = [...]; 
     $.ajax({ 
      url: scriptUrl, 
      type: 'get', 
      dataType: 'html', 
      async: false, 
      success: function(data) { 
       [...] 
       val1 = [...]; 
       val2 = [...]; 
       val3 = [...]; 
      } 
     }); 
     return [val1, val2, val3]; 
    } 

function two() { 
      var array = one(); 
      var val5 = array[0]; 
      var val6 = array[1]; 
      var val7 = array[2]; 
     } 
+4

你在哪裏聲明VAL1 ,val2&val3? –

+5

你應該看看[如何從AJAX調用返回響應?](http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call)而不是使用'async:false' – Bergi

+0

沒有看到'async:false'。所以我會說這不是重複的。 – Liam

回答

1

改變了我的代碼如下(工作):

function one(callback) { 
     var result = null; 
     var scriptUrl = [...]; 
     $.ajax({ 
      url: scriptUrl, 
      type: 'get', 
      dataType: 'html', 
      success: function(data) { 
       [...] 
       var val1 = [...]; 
       var val2 = [...]; 
       var val3 = [...]; 
       var result = [val1, val2, val3]; 
       callback(result); 
      } 
     }); 
    } 

function two(result) { 
    var val1_from_ajax = result[0]; 
    var val2_from_ajax = result[1]; 
    var val3_from_ajax = result[2]; 
} 

one(two); 

快速的解釋:
我的Ajax調用的結果傳遞給成功,其中結果被處理。之後,直接調用基於來自ajax的處理後的返回值的函數(帶來這些值)。這是基於AJAX的返回值的函數,由paremeter過去了,所以在我的例子,我叫one(two);這意味着callback(result);成功裏面two(result);
希望這澄清了一點:)

相關問題