我已经在网站上搜索过了,没有看到像我这样的问题,所以我希望这不是一份拷贝。
所以我有一个PHP脚本,它应该返回一个JSON数组到我的AJAX,我想使用这个数组来生成一个网址。
然而,即使我非常确定我在PHP端有一个数组,当我进行json_编码时,我在另一端得到一个简单的字符串。
PHP代码:
$n = 10;
$all_titles = array();
while($row = mysqli_fetch_array($result)) {
$title = trim($row['Job Title']);
if(array_key_exists($title, $all_titles)) {
++$all_titles[$title];
} else {
$all_titles[$title] = 1;
}
}
arsort($all_titles);
$top_titles = array_slice($all_titles, 0, $n);
$title_list = array();
foreach (array_values($top_titles) as $key => $val) {
array_push($title_list, array_keys($top_titles)[$key]);
}
echo json_encode($title_list);
基于我所做的其他测试,这些数组操作到目前为止似乎是有效的,所以我非常确定$title_list是一个数组。
这是我的JS:
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
alert("Generated URL: " + URL_gen(xmlhttp.responseText));
}
}
最后,出现问题的地方是:
function URL_gen(list) {
var url = list[2];
return url;
}
我改变了列表[#](列表[0],列表[1]等)中的数字,每个数字都是一个字符,意思是列表(作为上面PHP函数的响应文本从onreadystatechange传入)是一个字符串,而不是JSON数组。
有什么建议吗?
它就是这样做的。返回一个字符串。您需要在客户端解析它。
alert("Generated URL: " + URL_gen(JSON.parse(xmlhttp.responseText)));