PHP数组上的json_encode返回一个字符串

时间:2014-05-29 18:45:46

标签: javascript php ajax json

我在网站上搜索过,看不到与我类似的问题,所以我希望这不是副本。

所以我有一个PHP脚本应该将JSON数组返回给我的AJAX,我想使用该数组生成一个URL。

然而,即使我非常确定我在PHP端有一个数组,当我json_encode我在另一端得到一个简单的字符串时。

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]等)中的数字,并且每个都是一个字符,意思是列表(从onreadystatechange传入,作为PHP函数的响应文本)上面)是一个字符串,而不是JSON数组。

有什么建议吗?

1 个答案:

答案 0 :(得分:7)

它的作用。返回一个字符串。您需要在客户端解析它。

alert("Generated URL: " + URL_gen(JSON.parse(xmlhttp.responseText)));