0

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:is:[
1:is: "
2:is:l
3:is:e
4:is:a
5:is:d
6:is:_
7:is:i
8:is:d
9:is:"
10:is:、
11:is: "
12:is:c
13:is:a
14:is:l
15:is:l
16:is:c
17:is:e
18:is:n
19:is:t
20:is:e
21:is:r

返される配列のすべての文字は、すべての目立たない値ではなくループされます。JSONで返された配列を処理する適切な方法は何ですか?

4

2 に答える 2

3

応答ヘッダーをに設定するかapplication/json、dataTypeを$.post'json'に指定する必要があります

于 2012-09-03T22:53:01.187 に答える
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);
});

編集—ああ、4番目のパラメーターをに渡すこともできますが、$.post()「json」を渡すと結果を解析するように指示されるかどうかは個人的にはわかりません。おそらくそうです。

于 2012-09-03T22:52:46.757 に答える