jquery的奇怪行为 - append()不起作用

时间:2011-03-21 13:31:50

标签: jquery json append

这是我的剧本:

$(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,它就会开始工作。此外,如果我使用firebug逐步调试它,一切都按预期工作。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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

您打算将最终结果作为什么?