2016-05-25 15 views
0

私はバックエンドからデータを取得するajax post関数を持っています。PHPからjsonデータをAjax投稿に戻す

$.ajax({ 
    type: "POST", 
    url: action, 
    result: "json", 
    data: formData, 
}) 
.done(function(msg) { 

    console.log(msg.status); 

}); 

PHPは

return json_encode(array('status' => 'ok')); 

ですが、私が読んしようとすると、msg.status結果は未定義です。 {"ステータス": "ok"}

json形式で読むにはどうすればいいですか?

+2

phpの 'return'は出力を行いません。応答としてクライアントに出力のみが送信されるので、jsonを 'echo'する必要があります。 –

+0

エコーの結果は – raphadko

+0

と同じですが、エラーが発生していないことを確認してください。あなたのコード出力/警告、それはjsonを破損します。あなたのajax呼び出しがjsonを期待しているならば、json部分が完全な形式であっても、非json出力はすべてのjson応答を破損します。 '警告:30行目の{" status ":" ok "}'は、jsonパーサが関係する限りガーベッジです。 –

答えて

4

$.ajaxにはresultという特性がありません。 jQueryにJSONの解析を指示する場合は、dataTypeを使用する必要があります。

$.ajax({ 
    type: "POST", 
    url: action, 
    dataType: "json", 
    data: formData, 
}) 
.done(function(msg) { 
    console.log(msg.status); 
}); 
+0

ありがとうRocket、それはうまくいきました!私を少し混乱させるものです。私が送信しているデータ(formData)はjson形式ではなく、戻り値の代わりに$ .ajaxのデータ引数を参照するはずのデータ型ではありませんか? – raphadko

+0

@raphadko:いいえ、 'dataType'は' data'プロパティとはまったく関係ありません。 'dataType'はjQueryに* result *の解析方法を伝えます。 *リクエスト*のタイプを変更したい場合は、 'contentType'プロパティを使うことができます。参照:http://api.jquery.com/jquery.ajax/ –

関連する問題