我有这段代码
var loadFilePromise = new Promise(function(loadFilePromiseResolve, loadFilePromiseReject) {
$.ajax({
type: 'post',
url: "http://localhost:12343/MyTestPage.aspx",
data: {
DocumentFileID: documentFileId
},
dataType: 'json'
}).then(function(resp) {
// Do something here
loadFilePromiseResolve();
}, function(xhr) {
// This is reject response from ajax. And it hits here.
var msg = "Error occurred: " + xhr.statusText + " (" + xhr.status + ")\n" + Util.parseAspxExceptionMessage(xhr.responseText);
loadFilePromiseReject(msg);
});
});
我想知道为什么承诺被拒绝了。我查看了xhr
对象内部,但没有。关于这一点的奇怪之处在于状态为200
和statusText = OK
。
需要帮助,因为我在ES6中还没有太多的知识。
答案 0 :(得分:2)
请参阅jQuery documentation on ajax
:
jqXHR.then( function( data, textStatus, jqXHR ) {}, function( jqXHR, textStatus, errorThrown ) {} );
包含.done()和.fail()方法的功能,允许(从jQuery 1.8开始)操作底层的Promise。有关实现细节,请参阅deferred.then()。
错误回调的签名是function(jqXHR, textStatus, errorThrown)
,因此您可以使用textStatus
和errorThrown
获取有关确切问题的更多信息。
答案 1 :(得分:1)
您应该将失败函数的签名更改为
function( jqXHR, textStatus, errorThrown )
然后检查最后2个参数的值。