私はモバイルアプリを開発していて、WebViewに埋め込まれたHTML / CSS/JSでほとんどの部分を実行しようとしています。HTML / CSS / JSコードがローカルファイルシステム上にあると想定されている間、アプリはXMLWebサービスからデータを取得する必要があります。ただし、WebKitはローカルファイルのOriginをnullに設定するため、Ajax呼び出しの「同一生成元ポリシー」の問題に陥ります。ただし、$。ajaxパラメーターでdataTypeを「xml」ではなく「jsonp」に設定すると、Chromeで呼び出しが失敗する(parserError)ことに気付きましたが、デバッガーでWebサービスから返されたデータを確認できます。私の質問は、応答データを受信したときに呼び出されるデフォルトのコールバックをなんとかしてオーバーライドすることは可能ですか?そうでない場合、他に何ができますか?Webサービスを実行しているサーバーにアクセスできません。この問題に関する他のスレッドでは、私は Ajax呼び出しが機能するのではなく、ページの読み込み時にリクエストを実行することを読みました。しかし、それが何を意味するのか、それがどのように行われるのかは私にはわかりません。私はこれに関するどんな照明にも感謝します!
1 に答える
0
JSONP はパディング付きの JSON であり、URL (GET のみ) を<script>
タグとして読み込み、JSONP 応答に実際の JSON を最初の引数とする関数呼び出しが含まれていると想定します。
Twitter などのほとんどのリモート Web サービスは、'callback=' GET パラメータをサポートしています。例えば:
GET /my/jsonp/?callback=myFunction
応答は、コンテンツを含む「JavaScript」ファイルである必要があります。
myFunction({"code": 200, "status": "OK"});
それがJSONPです。
于 2011-02-11T12:05:43.900 に答える