0

URL から JSON データを取得し、そのデータをページにロードする JavaScript があるので、別の JavaScript を呼び出してスライド効果を追加します。

より簡単な解決策があります。つまり、setTimeout を使用します。ただし、URL からのデータの取得には一定の時間がないため、このソリューションは完全ではありません。コールごとに異なります。

したがって、最初の JavaScript が読み込まれたかどうかを確認してから、2 番目の JavaScript を呼び出したいと考えています。

4

1 に答える 1

2

JavaScript は非同期言語です。少なくとも、その HTTP API は (ほとんど) 非同期です。

settimeout を使用するべきではありませんが、原因となるイベントのリストを作成するには、代わりに非同期チェーンを使用する必要があります。http://www.infoq.com/articles/surviving-asynchronous-programming-in-javascriptのように、これを支援するライブラリがたくさんあります。

独自のサイトからコンテンツをロードしている場合、JSON が最終的にロードされるときに onsuccess/oncomplete イベントが発生し、それにコールバックを割り当てることができます。実際にどのように呼び出されるかは、使用している JavaScript フレームワークによって異なります。

JSONP と呼ばれる形式でリモート サイトからのデータを使用している場合は、それへのコールバックを定義する必要があります。これは、 onMyDataArrivedのようなパブリック関数名にする必要があります。そこにコールバック コードを追加する必要があります。一部のフレームワークは、この詳細を非表示にし、データが到着したときに削除するランダム関数を生成し、代わりに onSuccess / onComplete に似た API を提供します。

現在、最も人気のある JavaScript フレームワークは jQuery で、次のようなことができます。

$.ajax({
    url: 'give_me_my_json.php',
    dataType: 'json', 
    success: function(data){
         //call your second javascript
    }, 
    error: function(){
         //WHOOOPSIE... data could not be loaded
    }
});
于 2012-07-23T23:52:10.097 に答える