1

我在准备好填充表格的文档中有一些 ajax 调用。不幸的是,只有在填充表格后才会显示该页面。

$(document).ready(function() {
    // alert('Why');
    var jsondata2a;
    turl = "/rims/tab1/get_data?abc=123";
    $.ajax({
    url: turl+"",
    cache: false,
    async: false,
    success: function(data){
            jsondata2a = data;
    },
    error: function(){
            $("#gerror").html("<p>An error has occurred!</p>");
        }
    });

但是,如果我在 ready 函数中放置一个警报语句,页面会立即显示警报,然后在接受警报后填充表格。

整页显示在警报语句上,但如果警报不存在,则在完成所有 ajax 调用之前不会显示该页面。我试图将就绪功能移动到页面的不同部分,但没有成功。我尝试过使用 IE 和 Chrome。

任何帮助表示赞赏。

谢谢

4

3 回答 3

1

您无需等待$(document).ready()执行 ajax 请求。你只需要在与 dom 交互之前等待。因此,在 ready 函数之外执行您的请求,并在您的成功回调中侦听 dom ready。

这不会阻止您的页面呈现。

$.ajax({
  ...
  success: function() {
    $(document).ready(function() {
      /* manipulate DOM here */
    });
  }
});
于 2012-05-01T23:40:52.553 回答
1

如果你想防止你的jQuery ajax调用阻塞,你必须将 async 设置为 true (默认)。

        $.ajax({
            type: 'POST',
            url: 'YourURLHere.html',
            data: '{}',
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            async: true,
            success: function (data, text) {
                // Do Something
            },
            error:function (request, status, error){
                // Alert Somebody
            } 
        });
于 2012-05-01T23:50:51.253 回答
1

这应该有效。我敢肯定,您还有其他知道如何绘制该表的 scipt prt。只需在成功回调中添加该代码

$(document).ready(function() {
    // alert('Why');
    var jsondata2a;
    turl = "/rims/tab1/get_data?abc=123";
    $.ajax({
    url: turl+"",
    cache: false,
    // async: false,
    success: function(data){
            jsondata2a = data;
            for(var i=0; i< data.length; i++){
               $("#table_id").append("<tr>" ...boud data here data[i].someAttribute... "</tr>");
            }
    },
    error: function(){
            $("#gerror").html("<p>An error has occurred!</p>");
        }
    });
于 2012-05-01T23:38:24.037 回答