1

環境: PH​​P 5.3.5 MySQL サーバー 5.5.8

初めての ajax 呼び出しを作成し、多くの決意をした後、結果を得ました。結果は文字列として返されているようです。お願いするときのために

alert(result[0]);

1文字しか返されません。

フィールド名を使用しようとすると、未定義の値が返されます。

私のAJAXのJavaScriptは次のとおりです。

$.ajax({ 
    type: "POST", 
    url: "models/ajaxHandler.php", 
    data: "handler=this&stu=21", 
    success: function(result){ 
            if (result !== null) 
            { 
                    alert(result + " " + result[0] +" " result['firstname']);  
                    var obj =  JSON && JSON.parse(result) || $.parseJSON(result);
                    alert(obj + " " + obj[0] + " " + obj['firstname']);
            } 
            ShowDialog(false); 
            e.preventDefault(); 
    }, 
    error: function()
    { 
            alert("ajax failure"); 
    } 
});

そのため、PHP で fetchAll() を使用して mysql への PDO 接続を使用して結果が取得されると、次のようにphpから結果を返します。

echo json_encode($results);

結果カムバックのアラートは次のようになります。

[{"firstname":" Test","0":" Test","lastname":" One","1":" One","id":"2","2":"2", "st_usage_id":null,"3":null},{"firstname":" Mr","0":" Mr","lastname":" Two","1":" Two","id": "3","2":"3","st_usage_id":null,"3":null},{"firstname":" Mr","0":" Mr","lastname":" Three", "1":" Three","id":"5","2":"5","st_usage_id":null,"3":null}] [未定義

JSON の解析では、すべての結果がオブジェクトとして返されます。

また、次を使用してphpで結果を返そうとしました:

print_r(json_encode($results));

上記と同じ文字列が表示されます。最後に使った

$var_dump(results);

これにより、以下が返されました。

array(3) {
  [0]=>
  array(8) {
    ["firstname"]=>
    string(7) " DrTest"
    [0]=>
    string(7) " DrTest"
    ["lastname"]=>
    string(4) " One"
    [1]=>
    string(4) " One"
    ["user_public_info_id"]=>
    string(1) "2"
    [2]=>
    string(1) "2"
    ["st_usage_id"]=>
    NULL
    [3]=>
    NULL
  }
  [1]=>
  array(8) {
    ["firstname"]=>
    string(3) " Dr"
    [0]=>
    string(3) " Dr"
    ["lastname"]=>
    string(4) " Two"
    [1]=>
    string(4) " Two"
    ["user_public_info_id"]=>
    string(1) "3"
    [2]=>
    string(1) "3"
    ["st_usage_id"]=>
    NULL
    [3]=>
    NULL
  }
  [2]=>
  array(8) {
    ["firstname"]=>
    string(3) " Dr"
    [0]=>
    string(3) " Dr"
    ["lastname"]=>
    string(6) " Three"
    [1]=>
    string(6) " Three"
    ["user_public_info_id"]=>
    string(1) "5"
    [2]=>
    string(1) "5"
    ["st_usage_id"]=>
    NULL
    [3]=>
    NULL
  }
}
 a undefined

何が欠けているのかわかりませんが、それは単純なものだと確信しています。私はすべてを試したような気がします。誰かが私がどこで間違ったのか教えてもらえますか?

4

4 に答える 4

4

json データ型を指定します。

dataType: "json"

null結果が最近のバージョンの jQuery に含まれることはありません。代わりに、何も返されない場合はエラーになります。

于 2013-09-11T19:52:04.167 に答える
2

回答を受け入れたい場合:

試す:

alert(obj[0]['firstname']);
于 2013-09-12T16:52:06.940 に答える
1

"results = $.parseJSON(result);" を追加 成功呼び出しの先頭に追加すると、それが Javascript オブジェクトに変換されます。

于 2013-09-11T19:53:02.577 に答える