2012-04-09 60 views
2

我的代码是

data1 = ""; 

$('#send').click(function(){ 
    var post = $(this).val(); 

    $.post('post.php',{post:post},function(data){ 
     data1 = data; 
    }); 

    $(this).val(data1); 
}); 

似乎功能。点击的所有进程正在执行的.post的$函数之前执行。有谁能够帮助我。

+0

这是因为。员额()是异步的。 – j08691 2012-04-09 04:01:11

+1

我不知道为什么这个问题起来投票。它每天都会被问到,并且是关于Ajax最基本的事情之一。甚至在Ajax的第一个字母里! – 2012-04-09 04:12:56

+1

@AndrewBarber:并非每个人都是AJAX专家,人们也不知道Google的正确术语。如果你可以找到一个OP可以查看的问题来准确理解如何解决他的问题,那么将这个问题标记为另一个问题的副本。 – Blender 2012-04-09 04:31:49

回答

7

.post()是异步的,这意味着它在后台运行并且不会阻止后面的函数的执行。在设置data1 = data之前,$(this).val()已被调用。

尝试编码是在data$.post()功能的回调依赖的一切:

$('#send').click(function() { 
    $.post('post.php', { 
    post: $(this).val() 
    }, function(data) { 
    $('#send').val(data); 
    }); 
}); 
相关问题