![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
■前提
・$.getJSONでAPIからデータ取得するサンプルがあります
・この時、第1引数のURLを叩くと、データが表示されます
$.getJSON('http://hoge … &callback=?')
.error( ajaxError )
.success(function( data ){
・動作確認のため、「第1引数のURLで表示されたデータ」を取得(コピペ)して、「piyo.php」としてアップロードしてみました
■質問
・$.getJSON第1引数を「piyo.php」へ変更すると、同じようにデータ取得できると思ったのですが、うまくいきません
・何故でしょうか?
・「json値」をサーバが返すようにすれば良いのでしょうか?
・それはどうやるのでしょうか?
・「echo json_encode?」「header('Content-Type:?」それとも、拡張子がjsonじゃないといけないのでしょうか?
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を返すのが鉄則です。
回答ありがとうございました。
>戻り値として必ず「jsonデータ」を返すということはあり得ません
>自動でContent-typeを付加します
>正しくContent-typwを返すのが鉄則です
・詳細な説明ありがとうございました
・おかげで疑問が解決しました
・大変参考になりましたー
No.2
- 回答日時:
$.getJSON()メソッドは、戻り値としてjsonデータを期待するため、形式が「json文字列」であることと、Content-typeが正しくセットされている必要があります。
あと。文字コードはutf-8にしないと日本語などは文字化けします。
よって、
header("Content-Type: application/json; charset=utf-8");
が必要かと。
この回答への補足
回答ありがとうございます
>$.getJSON()メソッドは、戻り値としてjsonデータを期待するため、形式が「json文字列」であることと、Content-typeが正しくセットされている必要があります
・「Content-type」について教えてください
・例えば、戻り値として必ず「jsonデータ」を返す場合も、Content-typeは必須なのでしょうか?
・仮に形式が正しい「json文字列」だったとしても、「Content-type」未指定、あるいは、指定内容違いの場合には、正常動作しないのでしょうか?
・また、上記については、$.getJSON()以外だと、また別な挙動なのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- PHP JSON_UNESCAPED_UNICODEをつけてもJSONの日本語がブラウザで表示されない 1 2022/11/16 07:22
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- JavaScript json形式データのデータ連携について 4 2022/04/05 23:01
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP PHPを使って、別サイトの一部を取得して表示したいのです。。 1 2023/01/18 21:45
- JavaScript WordPressのコンタクトフォーム7にて送信者の位置情報を送らせたい 2 2022/09/14 23:28
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- 日本株 楽天RSS2での移動平均の取得について 1 2022/07/28 21:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチファイル 特定ウインドウ...
-
二つのbxsliderをレスポンシブ...
-
PDFを(htmlのように)無限に縦...
-
自作の地図をグーグルマップの...
-
正規表現で、特定の文字列を含...
-
Pythonのtkinterについて
-
GASでスプレッドシートの一番上...
-
1枚の画像をクリックすると複数...
-
C言語のflagの使い方が分かりま...
-
エクセルVBAでサイトログイン
-
VBA ディレクトリ名をワイルド...
-
以下のURL入れますか?皆さんは↓
-
画像のドットの部分が抜けてい...
-
Chinapost こよパズルどう動か...
-
非同期通信で掲示板を作る際の...
-
非同期通信を使うタイミングが...
-
PYTHONのtkinterについて
-
Pythonを勉強する道のり
-
Pythonを無料(安価)で学ぶ方...
-
RPA(PowerAutomate)の実装について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ajaxでhtmlを返して画面に描画…...
-
大量のデータを表として展開す...
-
Response.Write(変数)
-
ローカルネットワーク内での502...
-
【Ajax】改行を含めたデータを...
-
AjaxでDBと連携した動的リスト...
-
Ajaxで最新の情報が取得できない
-
Ajax、PHP、MySQLでDBからデー...
-
Rを使う際、データを読み込む時...
-
セレクトボックスのHTMLを教え...
-
JavaScript側でのXML作成の方法
-
Jqueryのキャッシュについて
-
CGI→AJAXへ配列の受け渡しは可...
-
jQueryの$.postの戻り値による...
-
【struts】2つのselectの連動
-
jquery serializable値取得
-
getJSONで受け取れるよう出力す...
-
googleマップにajax
-
python pandas ビックデータ解...
-
innerHTMLで表示完了後に、Ajax...
おすすめ情報