Jquery 当ajax出现问题时

Jquery 当ajax出现问题时,jquery,jquery-deferred,Jquery,Jquery Deferred,让我们先看看我的代码: $.when(function(){ //blah blah blah... $.post('submit.php', {name: 'John'}, function(){ console.log('saved!'); }, 'text'); //blah blah blah... }) .then( $('#data').show() ); 这是什么意思?我认为这意味着当第一个函数完成它的工作(发布到submit.ph

让我们先看看我的代码:

$.when(function(){
    //blah blah blah...
    $.post('submit.php', {name: 'John'}, function(){
        console.log('saved!');
    }, 'text');
    //blah blah blah...
})
.then( $('#data').show() );
这是什么意思?我认为这意味着当第一个函数完成它的工作(发布到
submit.php
和其他一些工作)时,显示
#数据。(我说得对吗?)

但是,当我运行它时,它首先显示
#数据
,然后显示日志
已保存(表示后期完成)


为什么?

您根本不应该调用
.when()

$.post()
已返回延迟的对象。

您可以直接对其调用
。然后()

您可以让它这样工作

$.post('submit.php', {name: 'John'}, function(){
    console.log('saved!');
}, 'text').then( $('#data').show() );
或者,如果您想继续使用$。当


当它用
函数
包装时,我几乎可以肯定它不会工作。是的,但是post数据是函数应该做的工作的一部分。它在发布前后都会做一些事情。。
$.when(function() {
    return $.post('submit.php', {name: 'John'}, function(){
        console.log('saved!');
    }, 'text');
}).then( $('#data').show() );