来自JSON的奇怪结果返回了数组

时间:2012-09-03 22:50:25

标签: php javascript jquery ajax json

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:是:e
4:是:a 5:是:d
6:是:_
7:是:我是 8:是:d
9:是:“
10:是:,
11:是:“
12:是:c
13:是:a 14:是:l
15:是:l
16:是:c
17:是:e
18:是:n
19:是:t
20:是:e
21:是:r

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

$.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”会告诉它解析结果;它可能会。