2017-08-31 17 views
-1

私は2つの約束と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'); 
}) 

私はエラーを取得しています:私はworng

Uncaught TypeError: Cannot read property 'then' of undefined

何をしているのですか?

+0

[例外TypeError:未定義の 'を' プロパティを読み取ることができません]の可能な重複(https://stackoverflow.com/questions/24788171/typeerror-cannot-read-property-then-of-undefined) – alexmac

+0

デバッグあなたのコード。ブレークポイントを設定し、変数を調べます。 'console.log'ステートメントを挿入します。 –

+0

これは本質的にはタイプミスですが、これは標準的なデバッグ手法を使い、エラーメッセージについて考えている他のバグのように見えます。その意味で、いいえ、それはdownvotingの基準である "有用な"質問ではありません。 –

答えて

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'; 
    }); 
} 
関連する問題