【发布时间】:2010-08-26 17:55:13
【问题描述】:
我有两个文件,一个包含通过 json_encode 编写的 PHP 数组 echoed,另一个包含网页的 javascript 函数。一个这样的功能,看起来像这样(并且未完成):
/*
* Function: selectVictim
* Called from function laserOn()
*
* Selects a random victim from a list of victims
*
* @return String: victim
*/
function selectVictim()
{
var params = "url=queenofsheep.com/Sheep/victims.php";
var request = new ajaxRequest();
request.open("POST", "victims.php", true);
request.setRequestHeader("Content-Type",
"application/x-www-form-urlencoded");
request.setRequestHeader("Content-Length", params.length);
request.setRequestHeader("Connection", "close");
request.onreadystatechange = function ()
{
if (this.readyState == 4)
{
if (this.status == 200)
{
if (this.responseText != null )
{
var vicString = this.responseText;
var vicArray = eval('"'+vicString+'"');
//var vicArray = vicString.split(',');
//var numVic = Math.floor(Math.random() * (vicArray - 1));
alert(vicArray);
}
else alert("Ajax error: No data received");
}
else alert("Ajax Error: " + this.statusText);
}
}
request.send(params);
}
应该从另一个文件中获取数组并对它做超出这个问题范围的事情。不幸的是,虽然this.responseText 包含格式为 JSON 编码的数组
var jsonArr =
["1","2,","3"]
激活函数什么都不做,evaling this.responseText 产生“未定义”。
我在这里做错了什么?如果需要,我可以提供更多真实代码、实际数组的示例。这让我发疯了。
【问题讨论】:
-
您的 JSON 输出是
var jsonArr = ["1","2,","3"]还是["1","2,","3"]? -
在响应文本周围添加引号告诉它它是一个字符串。所以评估没有结果。尝试将所有内容包装在
()中,因此:eval('("' + vicString + '")');。但是要意识到添加引号只会产生一个字符串......哦,还有Don't eval to parse JSON
标签: javascript ajax json eval