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返回数组的正确方法是什么?
答案 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”会告诉它解析结果;它可能会。