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 回答
0

您需要以下systemXHR权限:

https://developer.mozilla.org/en-US/Apps/Developing/App_permissions

于 2013-11-19T22:36:48.790 回答