如何使用jsonp和jquery加载json文件
我在远程url中有一个文件abcjsn.json,如:http://abc.com/abcjsn.json Json文件的内容是:如何使用jsonp和jquery加载json文件,jquery,json,jsonp,Jquery,Json,Jsonp,我在远程url中有一个文件abcjsn.json,如:http://abc.com/abcjsn.json Json文件的内容是: { "root": { "node": [ { "@attributes": { "id": "6", "name": "Europe", "description": "European Curricula"
{
"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'
});
但我无法访问它。它将进入警报状态。
我该怎么做。这样做
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。我假设您具有跨域访问权限
编辑
如果您没有跨域访问权限,那么您必须在服务器中实现一个代理,该代理将请求远程服务器,并将结果提供给您或用户一些讨论过的跨域技术。但是请注意,它们仅在您有权访问目标域时才适用。服务器应返回类似的内容
myCallBackFunction
(“{….}”)
您的myCallBackFunction
应该调用jQuery.parseJSON(…)
然后就可以了。假设服务器将JSON包装在一个函数中,那么这应该可以工作:
var url = "http://abc.com/abcjsn.json?callback=?";
$.getJSON(url, function(data){
console.log(data);
}
请注意url中的回调
参数。这将允许您从跨域访问:
上面问题中的JSON
应该包装在函数中
调用:
步骤1:使功能可用:
确保事先在全局窗口对象
上定义了myCallbackFunc
(加载脚本标记
后将立即执行此函数)。例如:
window.myCallbackFunc = function(jsonData) {
// do something with the jsondata
}
myCallbackFunction({
"root": {...}
});
步骤2:准备远程JSON文件
:
确保远程JSON文件
正在调用myCallbackFunc函数
,并将JSON
传递给它。例如:
window.myCallbackFunc = function(jsonData) {
// do something with the jsondata
}
myCallbackFunction({
"root": {...}
});
步骤3:准备并加载脚本标记:
然后,您应该使用script
标记请求此文件,如下所示:
var scriptEl = document.createElement('script');
scriptEl.src = "http://example.com/abcjsn.json?callback=myCallbackFunc";
scriptEl.type = "text/javascript";
document.body.appendChild(scriptEl);
注意:我们需要在查询字符串
中添加回调
,其值具有函数
的名称(myCallbackFunc
)。加载文件后,将执行此函数
祝你好运 服务器必须支持JSONP。如果不是,你就不走运了。我必须进行跨域访问。如果不是本地的,你能与我们共享JSON所在的URL吗?我无法访问。看看-注意json对象是如何作为参数传递给函数myCallback