我在PHP中有一个名为$ jsonRankings的数组。它是一个索引数组,每个元素包含一些utf8编码的HTML。为什么这个'undefined'
我这个数组加载到另一个阵列,在它有一些其他数据:
$sumArray['rankings'] = $jsonRankings;
我已经做了这个数组的print_r的并验证它仅包含我所需要的数据,指数从0开始。
我的PHP文件的输出是这样的:
echo json_encode($sumArray);
这里是我的javascript:
function getScores(){
var xmlhttp;
var jsonText;
var rowData;
var rowText;
if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else { // code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
jsonText = xmlhttp.responseText;
var parsedJSON = $.parseJSON(jsonText);
rowData = parsedJSON.rankings;
for(var index in rowData)
{
rowText += rowData[index];
}
document.getElementById('rows').innerHTML = rowText;
document.getElementById('sessionName').innerHTML = parsedJSON.sessionName;
document.getElementById('elapsedTime').innerHTML = "Elapsed Time: " + parsedJSON.elapsedTime;
document.getElementById('remainingTime').innerHTML = "Remaining Time: " + parsedJSON.remainingTime;
document.getElementById('lapsCompleted').innerHTML = "Laps Completed: " + parsedJSON.lapsCompleted;
document.getElementById('flag').innerHTML = "Flag: " + parsedJSON.flag;
document.getElementById('tickerMessage').innerHTML = parsedJSON.tickerMessage;
}
}
xmlhttp.open("GET", "scoreboard.php?json=1", true);
xmlhttp.send();
setTimeout(getScores, 1000);
}
getScores();
基本上这个脚本每秒运行一次,并更新页面上的一堆值,包括更改(表体)标记的内容,插入需要在那里的任何行。
这一切都完美,除了我的表体总是有“undefined”作为第一行。我真的不明白为什么。
你不应该滥用'innerHTML'这样。使用'textContent'代替 –
JSON *实际*看起来像什么?您应该能够从浏览器的网络调试控制台中检查它。 – Pointy
你如何使用'$ .parseJSON'?你在页面上有'jQuery'吗?如果是这样,为什么你不使用jQuery来发出AJAX请求? –