1

FireFoxOSパッケージアプリを作成しています。パブリック json-api サーバーからライブラリを取得したいのですが、サービスを提供するサーバーが json を jsonp に変更しません (?callback または ?jsonp はまだ json のみを返します)。クライアント側に回避策はありますか? jqueryまたはzeptoとバックボーンを使用しています私のコード:

$.ajax({
    url: apiMangaeden[0],
    dataType: 'jsonp',
    data: 'data',
    jsonp: 'callback',
    success: function (data) {
        console.log('It works')
    }
});
4

3 に答える 3

1

お使いの HTTP サーバーではなく、CORS または JSONP をサポートしていない場合は、クロスサイト リクエストのパーミッション ( systemXHR パーミッション) をリクエストし、manifest.webappで"type": "privileged"を設定する必要があります。

https://github.com/mozilla-b2g/gaia/blob/master/apps/communications/manifest.webapp#L81

https://developer.mozilla.org/en-US/Apps/Developing/Packaged_apps#Types_of_packaged_apps

XHR オブジェクトにmozSystemプロパティを設定します。

https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#Non-standard_properties

https://github.com/mozilla-b2g/gaia/blob/master/apps/communications/contacts/js/fb/fb_query.js#L37

jquery >= 1.5.1では、$.ajaxのxhrFields設定を使用して設定できるはずです。

http://api.jquery.com/jQuery.ajax/

$.ajax({
  url: apiMangaeden[0],
  dataType: 'json',
  data: 'data',
  xhrFields: {
    mozSystem: true
  },
  success: function (data) {
    console.log('It works')
  }
});
于 2013-11-20T04:09:08.790 に答える
0

CORS プロキシをお勧めします CORS プロキシを使用すると、サイトの JavaScript コードが、同じオリジン ポリシーにより通常はブロックされる他のドメインのリソースにアクセスできるようになります。

http://www.corsproxy.com/

于 2013-11-19T22:08:24.637 に答える