我正在制作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')
}
});
答案 0 :(得分:1)
如果它不是您的HTTP服务器并且它不支持CORS或JSONP,您需要请求跨站点请求权限( systemXHR权限)并设置“type”:“ manifest.webapp 中的特权“:
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')
}
});
答案 1 :(得分:0)
我推荐你CORS代理 CORS代理允许您站点上的JavaScript代码访问其他域上的资源,这些资源通常会因同源策略而被阻止。
答案 2 :(得分:0)