我想用async = false ajax制作脚本来制作一些控件并保存。 我想向用户展示这一进展。但是在完成整个脚本后IE和chrome更新Label1。 Firefox运行正常。有谁知道我做错了什么?
感谢您的帮助。
mydata.php
if ($_POST['oper']=='wait')
{
sleep(2);
}
CODE
function myFunc()
{
$.ajax({ type: 'POST',cache: false, url: 'mydata.php', data: {oper: 'wait'}, dataType: 'json', async: false});
$('#Label1').html('1');
$.ajax({ type: 'POST',cache: false, url: 'mydata.php', data: {oper: 'wait'}, dataType: 'json', async: false});
$('#Label1').html('2');
$.ajax({ type: 'POST',cache: false, url: 'mydata.php', data: {oper: 'wait'}, dataType: 'json', async: false});
$('#Label1').html('3');
}
<span name='Label1' id='Label1'>XXX</span><button onclick='myFunc()'>Save</button>
答案 0 :(得分:0)
试试这个:
function myFunc()
{
$.ajax({ type: 'POST',cache: false, url: 'mydata.php', data: {oper: 'wait'}, dataType: 'json', async: false});
$('#Label1').delay('1000').html('1');
$.ajax({ type: 'POST',cache: false, url: 'mydata.php', data: {oper: 'wait'}, dataType: 'json', async: false});
$('#Label1').delay('1000').html('2');
$.ajax({ type: 'POST',cache: false, url: 'mydata.php', data: {oper: 'wait'}, dataType: 'json', async: false});
$('#Label1').delay('1000').html('3');
}
但我建议您使用Ajax Success / Complete功能,而不是等待ajax完全完成。
这样的事情:
$.ajax({ type: 'POST', cache: false, url: 'mydata.php', data: {oper: 'wait'}, dataType: 'json', async: false, success: function() { /* Do whatever you want here when your ajax has been successful. */}, error: function() { /* Here you can handle the errors thrown by ajax */ alert(e);}, complete: function() { /* Put the code here what you want to run irrespective of success or error. */ }})
答案 1 :(得分:0)
对于那个帖子,你好吧。 async = false已弃用,我必须找到另一种方式。谢谢你的帮助。