我是javascript的新手。我正在尝试使用以下代码检索跨站点数据。
我该如何进行此代码工作,例如我希望每个家庭成员都能收到屏幕提醒。
感谢您的帮助。
代码修改如下,警告说[object Object],你知道这意味着什么吗?:
<html>
<head>
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
// LOOP THROUGH EACH FAMILY MEMBER AND DO STUFF!
alert(mValue)
});
}
});
</script>
</head>
<body>
</body>
</html>
答案 0 :(得分:1)
您不希望在$ .each
中使用jQuery包装oData
所以,而不是
$.each($(oData['ops:patent-family']['ops:family-member']),
你想要:
$.each(oData['ops:patent-family']['ops:family-member'],
另外 - 你必须使用返回的json(有一个第一个'ops:world-patent-data'级别),这看起来更像是:
if(oData['ops:world-patent-data'] &&
oData['ops:world-patent-data']['ops:patent-family'] &&
oData['ops:world-patent-data']['ops:patent-family']['ops:family-member']){
$.each(oData['ops:world-patent-data']['ops:patent-family']['ops:family-member'],
function(iIndex, mValue) {
// LOOP THROUGH EACH FAMILY MEMBER AND DO STUFF!
console.log(iIndex, mValue)
});
}
另一种完全不同的方法是使用jquery deferreds语法并使用.pipe转换数据 - 可能比if
更清晰
var sUrl = "http://ops.epo.org/2.6.2/rest-services/family/publication/docdb/EP.1000000.A1/.js?callback=?";
$.getJSON(sUrl)
.pipe(function(data){
try{
return data['ops:world-patent-data']['ops:patent-family']['ops:family-member'];
} catch(e){
return [];
}
})
.then(function(members){
$.each(members, function(iIndex, mValue){
console.log(iIndex, mValue)
})
})
答案 1 :(得分:0)
您需要创建内联脚本:
function myCallback(response) {
// Your stuff goes here.
}
var script = document.createElement("script");
script.src = "http://ops.epo.org/2.6.2/rest-services/family/publication/docdb/EP.1000000.A1/.js?callback=myCallback";
script.type = "text/javascript";
document.getElementsByTagName("head")[0].appendChild(script);
答案 2 :(得分:0)
jQuery的$ .ajax方法允许您为请求指定dataType。如果您指定JSONP,它将为您创建回调,因此您不必担心这一点。
它是这样的:
$.ajax(url, {
dataType: 'jsonp',
success: function(data) {
// do stuff with data here
}
});
这是一个JSFiddle,用你需要的数据证明: http://jsfiddle.net/PPVX3/
现在它正在将数据记录到控制台,如果您使用的是Chrome或Firefox,则可以使用开发人员工具查看控制台日志。