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

これは機能するはずです。そのテーブルを描く方法を知っている他の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>");
        }
    });
于 2012-05-01T23:38:24.037 に答える
1

$(document).ready()ajaxリクエストを実行するのを待つ必要はありません。domと対話する前に待つ必要があるだけです。そのため、ready関数の外部でリクエストを実行し、成功コールバック内でdomreadyをリッスンします。

これにより、ページのレンダリングが妨げられることはありません。

$.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 に答える