2017-06-14 9 views
0

GETリクエストを実行すると、サイトは文字列の先頭に疑問符を含むJSONではなく文字列を返します。GETリクエストからPHPで文字列をJsonに変換する

?({ "Years": {"min_year":"1941", "max_year":"2017"} }); 

IはPHPでjson_encode()関数を使用しようとしました。ただし、NULLを返します。

結果は、このサイトからです:https://www.carqueryapi.com/api/0.3/?callback=?&cmd=getYears

はJSONに結果を変換する方法を誰もが知っていますか?ありがとう、

+0

代わりに '?'の代わりに関数名を使うべきだと思います。これは 'jsonp'と呼ばれます –

+0

' 'encode'ではなく、' 'decode''であるでしょう。 – ficuscr

+0

@ficuscr。申し訳ありません、それはタイプミスです。私はエンコードを使用しました。 –

答えて

5

callbackパラメータを除いたURLから結果を取得すると、標準のJSON形式を取得できます。

https://www.carqueryapi.com/api/0.3/?cmd=getYears

{ "Years": {"min_year":"1941", "max_year":"2017"} }

+0

ありがとう、@ベン。なぜコールバック関数がそのような結果を生成するのか知っていますか? –

+1

彼らは、同じ発信元ポリシーに違反するAjax呼び出しの回避策であったJSONPを実装することを提供しました。あなたはサーバーサイドのPHPコードを実行しているので、問題はありません。 – gview

2

これは、本質的にJSONPです。 JSONの結果を含む関数?()を返しています。 has been described previouslyのように外部関数を削除する必要があります。

彼らは、同じ発信元ポリシーに違反するAjax呼び出しの回避策であったJSONPを実装するために提供しました。これはissue and technique is discussed hereです。

ベンは、コールバックのパラメータがなければ、問題全体を回避できることを発見しました。

+0

説明のために@gviewありがとう。 –

関連する問題