jQuery追加,等到呈现没有超时

时间:2014-04-24 00:06:41

标签: javascript jquery html css ajax

我是一个使用jQuery append方法将HTML附加到页面的AJAX。 HTML有点大,我想获得单元格的颜色,这些颜色是由CSS在同一个HTML文档中设置的。

我的问题是,如果我在追加方法后立即循环细胞,所有细胞都没有颜色,我等待几秒钟才能使它工作。现在,我正在暂停以开始循环细胞,但我不想这样做。我想知道1)为什么页面没有使用append呈现,为什么append在完全呈现html之前返回?2)我有什么替代方法。

我正考虑在HTML结尾处设置间隔来检查单元格的某些特定值,但我对这种方法并不满意。

谢谢!

1 个答案:

答案 0 :(得分:0)

不要在AJAX响应上使用间隔。如果你将超时设置得足够长,它们就可以工作,但你必须将超时设置为你想象的最大值,即使在5秒之后仍然有可能失败。此外,如果请求需要一毫秒,则另外4.99秒不会发生任何事情(如果超时为5秒)。

AJAX函数需要几个参数。其中一些是字符串(例如"内容类型:' application / json'")。有些是对象(如data:{requestId: 999})。您还可以提供其他功能作为参数。 $.ajax()接受这样的论证(称为'回调')并根据请求返回的内容执行。您可以提供仅在出现错误时执行的error:回调(如404或500)。有一个success:回调将在成功获取内容后立即执行,无论是1毫秒还是5秒。这可能就是你想要的。

无论您向$.ajax()函数传递参数,请按以下方式提供:

//...other arguments

success: function(response){
    $('#myTable').html(response);
});

//..other arguments

如果/当服务器响应成功时,该函数将完全执行。我应该提到这个回调可以采用自己的参数。其中,来自请求的实际内容是其中之一(在上面的示例中,第一个参数是response)。无论您使用的是XML还是JSON,甚至是HTML,您的response中的内容都是相应的功能。

您可能已经在使用回调,但由于没有代码,我看到了超时'与“AJAX”这个词配对,我猜这是你的答案。