我在远程网址中有一个文件abcjsn.json,如: http://abc.com/abcjsn.json Json文件的内容是:
{
"root": {
"node": [
{
"@attributes": {
"id": "6",
"name": "Europe",
"description": "European Curricula"
},
"node": {
"@attributes": {
"id": "2553",
"name": "Ireland",
"description": "Irish Curricula"
},
"node": {
"@attributes": {
"id": "3083",
"name": "Primary School Curriculum",
"description": "Primary Curriculum"
}
}
}
},
{
"@attributes": {
"id": "7",
"name": "Middle East",
"description": "Middle Eastern Curricula"
}
},
{
"@attributes": {
"id": "8",
"name": "North America",
"description": "North American Curricula"
}
},
{
"@attributes": {
"id": "9",
"name": "South America",
"description": "South American Curricula"
}
}
]
}
}
我正在使用以下代码访问它:
var url = "http://abc.com/abcjsn.json"
$.ajax({
url: url,
dataType: 'jsonp',
data: {},
success: function(data) { alert(data); },
jsonp: 'jsonp'
});
但我无法访问它。它更新得警惕。 我怎么能这样做。
答案 0 :(得分:1)
服务器应该返回类似
的内容 myCallBackFunction
( '{....}')
并且您的myCallBackFunction
应该调用j Query.parseJSON(...)
然后就可以了。
答案 1 :(得分:1)
假设服务器将JSON包装在一个函数中,那么这应该有效:
var url = "http://abc.com/abcjsn.json?callback=?";
$.getJSON(url, function(data){
console.log(data);
}
请注意网址中的callback
参数。
答案 2 :(得分:0)
这样做
var url = "http://abc.com/abcjsn.json"
$.ajax({
url: url,
dataType: 'json',
data: {},
success: function(data) { alert(data); }
});
编辑
JsonP被删除了,因为如果您使用的是jsonp,那么您下载的源代码应该是这样的
myLocalFunc({
// Contnet of that json;
});
加载时,会执行名为myLocalFunc
的函数。你打电话的只是一个json。我以为你有跨域访问权。
编辑
如果您没有跨域访问权限,那么您必须在服务器中实现一个代理服务器,该代理服务器将请求远程服务器,并向您或用户提供一些讨论here的跨域技术。但请注意,仅当您有权访问目标域时,它们才适用。
答案 3 :(得分:0)
Cross Domain
:上述问题中的JSON
应该包含在function
来电中:
function
可用:确保事先在myCallbackFunc
上定义了global window object
(加载script-tag
后,此功能将立即执行)。例如:
window.myCallbackFunc = function(jsonData) {
// do something with the jsondata
}
remote JSON file
:确保远程JSON file
正在调用myCallbackFunc function
并传递JSON
。例如:
myCallbackFunction({
"root": {...}
});
script
标签:然后,您应该使用script
标记请求此文件,如下所示:
var scriptEl = document.createElement('script');
scriptEl.src = "http://example.com/abcjsn.json?callback=myCallbackFunc";
scriptEl.type = "text/javascript";
document.body.appendChild(scriptEl);
注意:我们需要在callback
中添加query-string
,其值为name
function
({{1} }} 在这种情况下)。加载文件后将执行此功能。
祝你好运......