2012-03-19 8 views
-1

ように私は、ユーチューブへの一連の呼び出しを行います。アイデアは、データを渡すことですは、Javascriptのコールバックの構築:Javascriptを/ jQueryの

function getVideos() { 

    for(var i=0; i<queryArray.length; i++){ 
     var queryUrl = "http://gdata.youtube.com/feeds/api/videos?q="+queryArray[i]+ 
       "&max-results=1&orderby=relevance&alt=json-in-script&format=5"; 

    $.get(queryUrl, function(){ 
    constructHtml(data, i); 
    }); 

    } 

} 

$その後、表示する関数を呼び出すに.getから返さ適切なhtml。

私は

function constructHtml (data, idNum) { 

// do some stuff 
} 

を持っていますが、放火犯はconstructHtmlで、 "データ" が定義されていない私に言っています。私は間違った方法でjqueryのコールバックを使用して私は推測しています。私はあなたの助けに感謝します!

答えて

4

あなたが成功機能は、他の有用なを含むことができることdocs for .get()からわかります、コールバック関数に

$.get(queryUrl, function(data){ 

$.get(queryUrl, function(data){ 
    constructHtml(data, i); 
}); 
1

変更

$.get(queryUrl, function(){ 

dataパラメータを欠いていましたパラメータsuccess(data, textStatus, jqXHR) A callback function that is executed if the request succeeds.

1

あなたは少し見逃している:

$.get(queryUrl, function(data){ 
    constructHtml(data, i); 
}); 

あなたはAJAXの負荷から、あなたの匿名のコールバックはデータ変数を取ることを指定する必要があります。そして、これは、あなたが匿名関数の中でdataパラメータが不足しているコールバック関数に

$.get(queryUrl, function(data){ 
    constructHtml(data, i); 
}); 
1

を通過されます。

$.get(queryUrl, function(data){ 
    constructHtml(data, i); 
}); 

しかし、また、 iは常にforループが実行された後に関数が実行されるため、queryArray.lengthになります。

あなたはローカルスコープにiを取得するためにjQueryのeachを使用することができます。

$.each(queryArray, function(i, value) { 
    var queryUrl = "http://gdata.youtube.com/feeds/api/videos?q=" + value + "&max-results=1&orderby=relevance&alt=json-in-script&format=5"; 

    $.get(queryUrl, function(data){ 
     constructHtml(data, i); 
    }); 

}); 
0

データを渡す必要がありますあなたの関数へ/

関連する問題