2011-03-21 82 views
0

,这是我的脚本:奇怪的行为 - )追加(不工作

$(document).ready(function() { 
    $.post("mysql_calendar/json_fail.php", 
    function (data) { 
     var sel = $("#availableTime"); 
     sel.empty(); 
     for (var i=0; i<20; i++) 
     sel.append('val' + i + '; '); 
     sel.append ('test; ') ; 
    }, "json"); 
    var ss = $("#availableTime"); 
    ss.empty(); 
    ss.append ('not working 1; ', 'not working 2; ', 'not working 3; ') ; 

json_fail.php:

< ? php 
echo '[]'; 
? > 

这个脚本的结果: Laikas:val0; val1; val2; val3; val4; val5; val6; val7; val8; val9; val10; val11; val12; val13; val14; val15; val16; val17; val18; val19; test;

为什么ss.empty()ss.append不工作?如果我删除$.post part,它开始工作。另外,如果我用萤火虫一步步调试它,一切都按预期工作。

+0

你的Jquery的版本是什么? 这个脚本在IE4的1.4.4版本上运行良好 – Tyde 2011-03-21 13:37:25

回答

1

预期的行为是什么? 请记住$ .post是异步的,所以第一个ss将被清空,然后你追加'not working1; ...'。

然后发生$ .post回调,再清空它并附加'val'字符串。

0

该帖子是异步的,导致succss函数在帖子完成后被调用。

实际上你这样做:

$.post("mysql_calendar/json_fail.php", //1) Post begins to process. 
    function (data) { //5) once complete call this 
     var sel = $("#availableTime"); //6) get ss 
     sel.empty(); //7) call empty items added in 4) will be cleared. 
     for (var i=0; i<20; i++) //8) append some text 
     sel.append('val' + i + '; '); 
     sel.append ('test; ') ; 
    }, "json"); 
    var ss = $("#availableTime"); //2) get ss 
    ss.empty(); //3) call empty 
    ss.append ('not working 1; ', 'not working 2; ', 'not working 3; ') ; //4) Append stuff 

什么你打算为你的最终结果?

+0

大家好,谢谢你的回答。大量的谷歌搜索后,我发现了这种异步行为。 我创建了这个例子,因为$(“#availableTime”).val('MyValue')不起作用。我的解决方法是定义一个全局变量,将其设置为'MyValue',并将其应用于函数(数据)块内的#availableTime。 – Tomas 2011-03-24 10:24:06