2012-05-01 59 views
1

我在準備填充表格的文檔中有一些ajax調用。不幸的是,頁面只在表格填充後才顯示。在文檔準備好之前顯示html頁面

$(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>"); 
     } 
    }); 

但是,如果我把警報語句就緒功能,立即用警告的頁面顯示,然後接受警告後填充表。

整個頁面顯示在警報聲明中,但是如果警報不存在,那麼在所有ajax調用完成之前,頁面不會顯示。我試圖將ready函數移動到頁面的不同部分而沒有成功。我曾嘗試使用IE和Chrome。

任何幫助表示讚賞。

謝謝

+2

您是否將.ajax()調用的異步設置爲false? – Zachary

+0

是的。我會盡力而爲。 – Ian

+0

嘗試與真實。頁面立即顯示,但表格從不填充。 – Ian

回答

1

這應該工作。我相信你還有其他一些知道如何繪製該表的scipt。只添加成功回調

$(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>"); 
     } 
    }); 
+0

感謝米蘭的快速反應。這工作。很好理解爲什麼。 – Ian

+0

如果我能看到其他ajax參數,我可以告訴它,也許它是同步調用,所以它阻止文檔中其他同步事件的執行......你能更新你的問題嗎? –

+0

我已經更新了這個問題。 – Ian

1

你並不需要等待$(document).ready()執行一個Ajax請求的代碼。你只需要等待與dom交互。因此,在就緒功能之外執行您的請求,並在您的成功回調中監聽dom。

這不會阻止您的頁面呈現。

$.ajax({ 
    ... 
    success: function() { 
    $(document).ready(function() { 
     /* manipulate DOM here */ 
    }); 
    } 
}); 
+0

感謝您的提示。 – Ian

1

如果你想阻止你jQuery ajax呼叫阻塞,你必須有異步設置爲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 
      } 
     }); 
+0

謝謝你的回覆。我會試驗一下,看看我能否解決問題。正如我在上面發佈的那樣,設置「async:true」顯示頁面,但表格從不填充。 – Ian

相關問題