2017-08-31 84 views
-1

我有兩個承諾,一個JavaScript函數:嵌套無極結構

uploadDocument = function (formData, order) { 
    $.ajax({ 
     type: "POST", 
     url: "/API/Documents/addDocument", 
     data: formData, 
     contentType: false, 
     processData: false 
    }).then(function (documentID) { 
     order.referenceID = documentID; 
     return $.ajax({ 
      type: "POST", 
      url: "/API/Documents/addOrder", 
      data: ko.toJSON(transaction), 
      contentType: "application/json" 
     }); 
    }).then(function (result) { 
     return 'success'; 
    }); 
} 

完美的作品,該API調用成功。

調用該函數是:

uploadDocument(formData, order).then(function (data) { 
    console.log('success'); 
}) 

在這一點上,我得到一個錯誤:

Uncaught TypeError: Cannot read property 'then' of undefined

我在做什麼撥錯?

+0

[類型錯誤:無法讀取屬性 '然後' 未定義]的可能的複製(https://stackoverflow.com/questions/24788171/typeerror-cannot-read-property-then-of-undefined) – alexmac

+0

調試你的代碼。設置斷點並檢查變量。插入'console.log'語句。 – 2017-08-31 15:54:58

+0

它本質上是一個錯字,可以像任何其他錯誤一樣使用標準調試技術並考慮錯誤信息。從這個意義上說,不,這不是一個「有用」的問題,這是降低投票的標準。 – 2017-08-31 15:56:04

回答

2

您需要退回您的$.ajax(),然後使用then就可以了。沒有返回,該函數默認返回undefined,那麼爲什麼你會得到一個錯誤。請參閱$.ajax(...).then(...)之前的return

uploadDocument = function (formData, order) { 
    return $.ajax({ 
     type: "POST", 
     url: "/API/Documents/addDocument", 
     data: formData, 
     contentType: false, 
     processData: false 
    }).then(function (documentID) { 
     order.referenceID = documentID; 
     return $.ajax({ 
      type: "POST", 
      url: "/API/Documents/addOrder", 
      data: ko.toJSON(transaction), 
      contentType: "application/json" 
     }); 
    }).then(function (result) { 
     return 'success'; 
    }); 
}