编辑:我已经在下面评论的其他用户的帮助下找出了问题. 问题是使用jQuery.load()有一个延迟时间.正如下面所指出的那样,问题在于看到变量,而不是其中的数据.我对以下问题的解决方案是使用jquery的延迟对象函数稍微调整代码.
$.ajax({
url: 'koc-click-tracker-loader.php',
data: {url: 'ar'},
dataType: 'html',
context: document.body })
.done( function( data ) {
// Same functionality as below
});
Run Code Online (Sandbox Code Playgroud)
原帖: 我试图解析一个包含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.
});
Run Code Online (Sandbox Code Playgroud)
无法读取undefined的属性'Rank'.
同样,由于某种原因,我的变量不是全局变量.或者有一些我缺少jQuery的东西......
小智 1
这是因为您的 $.each() 函数位于 $.load() 函数内部。
加载函数是一个异步调用。你正处于竞赛状态。
我敢打赌,如果你在线上放置一个断点output[i] = {,并且在线上也alert(output[0].Rank);放置一个断点,你将首先触发警报。
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |