Javascript Cross domain JSON
Javascript Cross domain JSON
嗨,我试图使用仅JavaScript
和HTML
从URL读取json
对象。我使用以下代码:
function getJSONP(url, success) {
var ud = '_' + +new Date,
script = document.createElement('script'),
head = document.getElementsByTagName('head')[0]
|| document.documentElement;
window[ud] = function(data) {
head.removeChild(script);
success && success(data);
};
script.src = url.replace('callback=?', 'callback=' + ud);
head.appendChild(script);
}
getJSONP('http://webURl?&callback=?', function(data){
console.log(data);
});
正如你所猜到的,我得到了Not at same origin as the document, and parent of track element does not have a 'crossorigin' attribute. Origin 'null' is therefore not allowed access.
服务器返回JSON数据,没有回调函数
谢谢你的帮助
服务器需要启用CORS使用这样的头:(credit to answer here: CORS with php headers)
// Allow from any origin
if (isset($_SERVER['HTTP_ORIGIN'])) {
header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400'); // cache for 1 day
}
// Access-Control headers are received during OPTIONS requests
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
exit(0);
}
或者服务器需要输出JSONP如下:
echo $_GET['callback'] . '(' . json_encode($whatever) . ')';
如果这不是在你自己的服务器上,另一个选择是在你自己的服务器上创建一个PHP文件,在你需要读取的url上做一个filegetcontents
(没有cors的JSON数据),并以JSONP格式回显相同的数据。然后,您可以在纯javascript getJSON
函数中使用这个新的PHP文件(url)。
如果中间没有服务器或cors或jsonp,这是不可能的
如果你想要一个快速&您可以通过iframe获取内容,或者使用像YQL这样的代理。
但是我建议使用后端策略来获取你的内容,然后用javascript处理它。
相关文章:
- jQuery匹配JSON对象的部分文本
- 在循环中分配json值时,值被覆盖
- 需要帮助设置json数组
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 使用JQuery解析JSON嵌套数组
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- 如何使用json将对象列表从java转换为javascript
- 如何使用 node.js 比较两个 json 数组
- 如何将JSON数据导入我的ejs模板
- 区分JSON中的矩阵和列表列表
- 不显示带有本地json文件数据的谷歌地图脚本
- 如何将json数据显示为html
- 如何为json对象中的段发送array[]
- JSON: Error Domain
- 通过javascript[Cros-Domain]获取JSON
- Cross-domain JSON/PHP
- Javascript Cross domain JSON