/ / getJSONは、nullを返すか、jqueryまたはphpのために何も返しませんか? -php、jquery、json

jqueryまたはphpのため、getJSONがnullまたはまったく返しません。 - php、jquery、json

JSONでエンコードされたデータを返すphpファイルを作成して使用しました getJSON それを読むために。 1つのソースから情報を取得して、複数のエリアに配信しようとしています。 content-typeを変更し、ヘッダーを使用したすべてのアクセスも許可しました。この時点で立ち往生しています。これを機能させる方法はありますか?

PHP

header("Cache-Control: no-cache, must-revalidate");
header("Content-type: application/json");
header("Access-Control-Allow-Origin: *");

$search_terms = curlData();
$json = array("term" => $search_term);
echo $_GET["callback"] . "(" . json_encode($json) . ");";

このphpファイルの出力は次のとおりです。

({"term":"sandwich city"});

json情報を取得するために使用しているjQueryは次のとおりです。

$.getJSON("http://MYWEBSITE.com/terms.php?callback", function(data) {
alert(data);
});

</s></s></s></s></s></s></s></s>

回答:

回答№1は1

({"term":"sandwich city"}); 有効なJSONPではありません。あなたが欠けています 機能名.

追加 =? jQueryが応答を処理する関数を自動的に生成するように、URLに追加します。

http://MYWEBSITE.com/terms.php?callback=?

から ドキュメンテーション

URLに文字列が含まれている場合 "callback=?" (または、サーバー側APIで定義されている同様の)リクエストは、代わりにJSONPとして扱われます。の議論を参照してください jsonp データ型 $.ajax() 詳細については。


ところで、JSONPを応答として送信する場合、応答のコンテンツタイプを application/json 正しくありません。応答は単純にJavaScriptです。

さらに、指定したように Access-Control-Allow-Origin ヘッダー、JSONPを使用する必要はまったくありません。通常のAJAX呼び出しを行ってJSONを返すことができます。