• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:getJSONで受け取れるよう出力するには?)

getJSONで受け取れるよう出力するには?

このQ&Aのポイント
  • 質問文章からセンセーショナルなタイトルを30文字前後で生成します。
  • $.getJSONを使用してAPIからデータを取得する方法について説明します。
  • 質問者が$.getJSONの第1引数を変更してデータを取得しようとしたが成功しなかった理由を解説します。

質問者が選んだベストアンサー

  • ベストアンサー
  • shockatz
  • ベストアンサー率80% (153/191)
回答No.3

No.2です。 > 戻り値として必ず「jsonデータ」を返す ということはあり得ません。返却されているのは、あくまで「json書式のテキスト」です。 そもそも、Webサーバは「.html」なり「.gif」なり、拡張子が登録されている要求URLの場合、自動でContent-typeを付加します。ところが、「.php」のような拡張子は、戻す内容が不明なため、(サーバの種類にもよると思いますが)デフォルト動作でtext/htmlなどのContent-typeを返します。 $.getJSONが、「どうせ戻りはJSONなのだからどんなCOntent-typeが来ても無視」と設計されればそう動作するわけで、事実、初期のjQueryは$.ajaxに"json"の指定がなく、textで受けてjson.parse()するような処理がまかり通っていましたがら、明確な基準はないのです。 ただ、サーバサイドから考えたら、相手は(ひょっとして前はContent-type不要で決め打ちだった?)$.getJSONだけではなく、$.getも$.ajaxもアリで、しかもjQueryなんか勝手にバージョンがどんどん上がっていくし、他にprototype.jsなんかもあり、正しくContent-typwを返すのが鉄則です。

re97
質問者

お礼

回答ありがとうございました。 >戻り値として必ず「jsonデータ」を返すということはあり得ません >自動でContent-typeを付加します >正しくContent-typwを返すのが鉄則です ・詳細な説明ありがとうございました ・おかげで疑問が解決しました ・大変参考になりましたー

その他の回答 (2)

  • shockatz
  • ベストアンサー率80% (153/191)
回答No.2

$.getJSON()メソッドは、戻り値としてjsonデータを期待するため、形式が「json文字列」であることと、Content-typeが正しくセットされている必要があります。 あと。文字コードはutf-8にしないと日本語などは文字化けします。 よって、 header("Content-Type: application/json; charset=utf-8"); が必要かと。

re97
質問者

補足

回答ありがとうございます >$.getJSON()メソッドは、戻り値としてjsonデータを期待するため、形式が「json文字列」であることと、Content-typeが正しくセットされている必要があります ・「Content-type」について教えてください ・例えば、戻り値として必ず「jsonデータ」を返す場合も、Content-typeは必須なのでしょうか? ・仮に形式が正しい「json文字列」だったとしても、「Content-type」未指定、あるいは、指定内容違いの場合には、正常動作しないのでしょうか? ・また、上記については、$.getJSON()以外だと、また別な挙動なのでしょうか?

  • pa_cotta
  • ベストアンサー率43% (25/58)
回答No.1

PHP側でjson_encode関数でjson形式に変換した値を返す(echoする)ようにすればいいです

re97
質問者

お礼

回答ありがとうございましたー

関連するQ&A

専門家に質問してみよう