JSON返回数组的奇怪结果


Weird results from JSON returned array

PHP

$table = mysql_real_escape_string($_REQUEST['table']);
$query  = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.Columns where TABLE_NAME = '$table'";
$result = mysql_query($query);
$arr1 = array();
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    $arr1[] = $row['COLUMN_NAME'];
}
echo json_encode($arr1);

}

Javascript/Jquery

$("#verticalSelect").change(function() {
    var table = $("#verticalSelect option:selected").attr('value');
    $.post(PROCESSORFILE, {"task": "getTableDupeFields", "table": table}, function(data) {
        $.each(data, function(key, value){
            $("#test-area").append(key+' is: '+value+'<br/>');
        });
        alert(data);
    });
});

现在,通过返回JSON变量的警报,我得到了预期的结果。

["lead_id", "callcenter", "monkey" ...]

但是使用Jquery.each()函数,我得到的是:

0:是:[
1:是:"
2:是:l
3:is:e
4:是:a
5:是:d
6:是:_
7:is:i
8:is:d
9:is:"
10:是:,
11:是:"
12:is:c
13:is:a
14:is:l
15:is:l
16:is:c
17:is:e
18:是:n
19:是:t
20:is:e
21:是:r

返回数组的每个字符都是循环的,而不是每个离散值。处理JSON返回数组的正确方法是什么?

您需要将响应标头设置为application/json,或者将$.post中的dataType指定为'json'

$.post()的结果不会为您解析。

$.post(PROCESSORFILE, {"task": "getTableDupeFields", "table": table}, function(data) {
    data = $.parseJSON(data);
    $.each(data, function(key, value){
        $("#test-area").append(key+' is: '+value+'<br/>');
    });
    alert(data);
});

编辑—哦,您也可以将第四个参数传递给$.post(),但我个人不确定传递"json"是否会告诉它解析结果;可能是这样。