Javascript 为什么会这样';未定义';
我在PHP中有一个名为$jsonRankings的数组。这是一个索引数组,每个元素都包含一些utf8编码的HTML 我将此数组加载到另一个包含其他数据的数组中:Javascript 为什么会这样';未定义';,javascript,php,arrays,Javascript,Php,Arrays,我在PHP中有一个名为$jsonRankings的数组。这是一个索引数组,每个元素都包含一些utf8编码的HTML 我将此数组加载到另一个包含其他数据的数组中: $sumArray['rankings'] = $jsonRankings; 我已经打印了这个数组,并验证它只包含我需要的数据,索引从0开始 我的PHP文件的输出如下: echo json_encode($sumArray); 以下是我的javascript: function getScores(){ var xmlhttp;
$sumArray['rankings'] = $jsonRankings;
我已经打印了这个数组,并验证它只包含我需要的数据,索引从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();
基本上,该脚本每秒运行一次,并更新页面上的一组值,包括更改(表体)标记的内容,插入需要的任何行
这一切都很好地工作,除了我的表体总是有“未定义”作为第一行。我真的不明白为什么。您可能在rowData上有一个函数,所以在添加到文本之前,请尝试使用HasOwnProperty检查rowData是否具有该属性:
for(var index in rowData)
{
if(rowData.hasOwnProperty(index)){
rowText += rowData[index];
}
}
您可能对rowData有一个函数,因此在添加到文本之前,请尝试使用HasOwnProperty检查rowData是否具有该属性:
for(var index in rowData)
{
if(rowData.hasOwnProperty(index)){
rowText += rowData[index];
}
}
我猜
rowText
是未定义的
var rowText; // The variable exist but it's value is undefined until a proper value is given to it.
for(var index in rowData)
{
rowText += rowData[index];
}
document.getElementById('rows').innerHTML = rowText;
如果rowData
为空(您应该转储它的值以确保),则rowText
将是未定义的
var rowText; // The variable exist but it's value is undefined until a proper value is given to it.
for(var index in rowData)
{
rowText += rowData[index];
}
document.getElementById('rows').innerHTML = rowText;
给它一个空字符串的初始值更有意义,它应该给你一个空字符串,而不是未定义的
var rowText; // The variable exist but it's value is undefined until a proper value is given to it.
for(var index in rowData)
{
rowText += rowData[index];
}
document.getElementById('rows').innerHTML = rowText;
另外,看一下。我猜
行文本
是未定义的
var rowText; // The variable exist but it's value is undefined until a proper value is given to it.
for(var index in rowData)
{
rowText += rowData[index];
}
document.getElementById('rows').innerHTML = rowText;
如果rowData
为空(您应该转储它的值以确保),则rowText
将是未定义的
var rowText; // The variable exist but it's value is undefined until a proper value is given to it.
for(var index in rowData)
{
rowText += rowData[index];
}
document.getElementById('rows').innerHTML = rowText;
给它一个空字符串的初始值更有意义,它应该给你一个空字符串,而不是未定义的
var rowText; // The variable exist but it's value is undefined until a proper value is given to it.
for(var index in rowData)
{
rowText += rowData[index];
}
document.getElementById('rows').innerHTML = rowText;
另外,请查看。将其分解为问题:
var rowText; //undefined
rowText += "Hello"; //undefined + "Hello";
console.log(rowText); //"undefined Hello"
如果将其设置为空字符串,则未定义的问题将消失
var rowText = "";
将其分解为问题:
var rowText; //undefined
rowText += "Hello"; //undefined + "Hello";
console.log(rowText); //"undefined Hello"
如果将其设置为空字符串,则未定义的问题将消失
var rowText = "";
你不应该这样滥用
innerHTML
。使用textContent
而不是JSON实际上是什么样子?您应该能够从浏览器的网络调试控制台进行检查。您如何使用$.parseJSON
?页面上有jQuery
吗?如果是这样的话,你到底为什么不使用jQuery来发出AJAX请求呢?我意识到从web复制和粘贴脚本很容易。但是请仔细看看。没有理由支持IE5/6,是吗?您刚刚从2008年的教程中复制了xhr代码?您不应该这样滥用innerHTML
。使用textContent
而不是JSON实际上是什么样子?您应该能够从浏览器的网络调试控制台进行检查。您如何使用$.parseJSON
?页面上有jQuery
吗?如果是这样的话,你到底为什么不使用jQuery来发出AJAX请求呢?我意识到从web复制和粘贴脚本很容易。但是请仔细看看。没有理由支持IE5/6,是吗?您刚刚从2008年的教程中复制了xhr代码?-1没有解释(尝试此
不会解释您所做的事情)-1没有解释(尝试此
不会解释您所做的事情)