편집 : 나는 아래에서 언급 한 다른 사용자의 도움으로이 문제를 파악했습니다. 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);'출력 [0] 요소가 '정의되지 않음'때문에 오류가 발생합니다. 의도적으로 루프의 인덱스 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