編集:私は以来、以下にコメントした他のユーザーの助けを借りて問題を見つけました。 問題は、jQuery.load()の使用に時間がかかることです。そして下で指摘したように、問題は変数が見られただけで、その中のデータではありませんでした。私の下の問題への解決策は、jquery's deferred object関数を使ってコードをわずかに調整することでした。私のJS変数がjquery.each()関数の外で見えないのはなぜですか?
$.ajax({
url: 'koc-click-tracker-loader.php',
data: {url: 'ar'},
dataType: 'html',
context: document.body })
.done(function(data) {
// Same functionality as below
});
オリジナルポスト: 私は7列
ランクでHTMLテーブルを解析しようとしています|ユーザー名|最高CPM |最後の24時間|合計クリック数|リンク先|最後にクリックした
次に、各行のデータをJSONオブジェクトに入れようとしています。しかし、.each()ループの外側にあるデータにアクセスしようとすると、私はできません。私の変数はグローバルスコープで定義されています。私が試してみると、デバッグのために警告(出力1 .Rank)。
var output = [];
$(function(){
var output = [];
$("#_BLANK").load("koc-click-tracker-loader.php #ar_content table", { url: 'ar' }, function() {
var data = $("#_BLANK table tbody"); i=0;
data.find('tr').each(function() {
var $td = $(this).find('td');
if (i > 0) { // Skip first iteration, has blank data.
output[i] = {
Rank: $td.eq(0).text(),
User: $td.eq(1).text(),
KocID: $td.eq(1).find('a').prop("href"),
CPM: $td.eq(2).text(),
Last24: $td.eq(3).text(),
TotalClick: $td.eq(4).text(),
LinksLeft: $td.eq(5).text(),
LastClicked: $td.eq(6).text() };
}
i++;
});
// Will Error here as well.
});
alert(output[1].Rank); // Errors here.
console.log("output", output); // Shows all the data properly.
});
未定義のプロパティ 'ランク' を読み取ることができません。
また、何らかの理由で、私の変数がグローバルではありません。または、jQueryで何か不足しているものがあります。
'alert(output [0] .Rank);'あなたの 'output [0]'要素が 'undefined 'なのでエラーを返します。意図的にループのインデックス1をスキップします。 – nnnnnn
この場合、正しいです。私の一部にはタイプミス。 1つ以上の静止エラー。 –
その場合、それは[この質問]の複製と思われる(http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call?noredirect = 1&lq = 1)とかなりの数があります。 'output'が定義されていないとは言わないので、' output [1] 'は定義されていません。 – nnnnnn