angular.js - AngularJS は $http.jsonp メソッドを使用して、ドメイン間でデータを誤ってリクエストします
巴扎黑
巴扎黑 2017-05-15 16:54:25
0
8
737

AngularJS が何であるかは以前から知っていましたが、今日試し始めたところ、この問題に遭遇しました。

コードは次のとおりです:

リーリー

アクセス後、ブラウザの開発者ツールから返されるステータスコードが200であることがわかり、返されるjson文字列が確認できますが、実行後は必ずerrorメソッドが呼び出されていることがわかります。長い間解決策が見つからないのですが、答えてくれる専門家はいますか?

巴扎黑
巴扎黑

全員に返信(8)
巴扎黑

クライアント側では、公式ドキュメントで非常に明確に説明されています「リクエストの宛先を指定する相対または絶対 URL。コールバックの名前は文字列 JSON_CALLBACK である必要があります。」サーバー側では、取得されるコールバック パラメータは angular ですangular.callbacks._0 など、クライアントによって計算されます (angular は、送信前にクライアントからのリクエストの数に基づいてコールバック フィールドの値を計算して更新します)。 string 'angular.callbacks._0({json data})'たとえば次のように返します。 リーリー

いいねを押す +0
漂亮男人

返されたjsonを投稿して見てください

いいねを押す +0
迷茫

バックエンド インターフェイスは、jsonp リクエストに対して特別な処理を実行する必要があります。リクエストにはコールバック パラメーターが含まれます。

戻り値は JavaScript コードの一部である必要があります:

リーリー

これは、JSONP がリクエストのキャリアとしてスクリプト タグを使用するのに対し、JSONP はドメインを越えることができるという事実に関連しています。

いいねを押す +0
習慣沉默

返されるコンテンツは次のように変更されます:

リーリー

試してみませんか?

いいねを押す +0
左手右手慢动作

jsonp(url,[config]) は、JSONP 形式 (JSON != JSONP) でのみ結果を処理できます。返されたデータが JSON 形式である場合、jsonp() はそれを解析できず、エラーを報告します。

いいねを押す +0
过去多啦不再A梦

パラメータは callback=JSON_CALLBACK です。Angular は JSON_CALLBACK を自動的に置き換えて callbackName を割り当てます。
データをリクエストすることはできますが、angular によって設定されたコールバックがトリガーされないため、アクセスに入ることができません。 jQuery はユーザーにそれほど近づくように設計されていないため、これは少し落とし穴だと思います

いいねを押す +0
小葫芦

元の投稿者はそれを解決しましたか? 私もあなたと同じ問題に遭遇しました。ブラウザでは正常に成功しますが、携帯電話でデバッグすると、常にエラーが発生します。data=unknown status: 404

いいねを押す +0
巴扎黑

元の投稿者はそれを解決しましたか? 私もあなたと同じ問題に遭遇しました。
コンソール表示: JSON_CALLBACK が定義されていません

$http.jsonp('http://m-static.igrow.cn/01tpl/json/data.json?callback=JSON_CALLBACK');
//これを追加するとデータを調整できるのですが、こんな感じですとても奇妙だ。
window.JSON_CALLBACK = 関数(データ) {

リーリー

};

エラーが返されたときに他のことを実行する必要がある場合はどうすればよいですか?

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート