0

さまざまなデータを単純に処理、保存、および交換するために使用される小さな Web アプリを開発しています。

ページが読み込まれると、PHP を使用して JavaScript 配列を作成し、window.unload 関数を使用してこの配列を反復処理します。

配列の各要素は連絡先 ID を保持し、ループは別の PHP スクリプトからデータ (名前、住所など) を表す対応する行を取得し、それをラッパー div に追加します。

for (var i = 0; i < contIDs.length; i++) {
    var row = document.createElement("div");
    row.className = "rowDiv";
    row.innerHTML = HTTPRequest("getRow.php?id=" + contIDs[i]);

    document.getElementById("rowsWrapper").appendChild(row);
}

FireFox では、ページが読み込まれ、行が 1 つずつ想定どおりにポップアップ表示されます。Safari のみがページをロードしてからロードし、すべての行が一度に DOM にポップされます。

誰かが私が間違っていることを想像できますか、またはそのような「ローディングアニメーション」を実装する方法のヒントを教えてもらえますか??

ありがとう、よろしく – ジュリアン

4

2 に答える 2

0

私の理解では、使用している for ループは、反復ごとに個々の HTTPRequest を呼び出すことになります...場合によっては、私が推測するハング タイムを引き起こす可能性があります (間違っている場合は修正してください。私はまだ学生:P)。PHP ファイルを呼び出す場合は、JSON を使用して配列全体を PHP に送信するために AJAX 呼び出しを使用しないでください。

元:

JSON.stringify(array)

そして、PHPで配列をデコードします

$array = json_decode($_POST['jsondata']); 

次に、リスト全体を一度に送り返すことができます...架空の「スキップ」時間で作成したくない場合は、いつでも間隔を使用できます。

参考:Javascript配列を渡す→PHP

于 2012-10-05T13:41:36.893 に答える
0

実際、それは私の HTTPRequest 関数の問題でした。新しい引数であるコールバック関数を追加することで、問題を解決できました。

そのため、ステータス コードが 200 で準備完了状態が 4 のときに、HTTPRequest でコールバックを呼び出しています。

でもありがとう

于 2013-01-02T12:21:01.253 に答える