所以,我有(事实上我们都这样做)Telerik Kendo UI 提供的这个很酷的 WCF Odata 服务,例如:(使用工作链接更新)http://demos.telerik.com/kendo-ui/Service/Northwind.svc。出于测试目的,这是非常少数的。
我想从 javascript 调用它并将结果显示为警报。所以,我的代码是:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
function button(src1) {
$.getJSON('http://demos.kendoui.com/service/Northwind.svc/Tasks(4)/Start?$format=json',
function(json) {
alert(json.d.Start);
});
}
</script>
</head>
<body>
<form id="form1">
<div><input type="button" onclick="javascript:button();" value="Call WCF Service" /></div>
</form>
</body>
</html>
但仍然在 Google Chrome 控制台中,我得到这个“Access-Control-Allow-Origin 不允许 Origin null”。为什么这样?
UPD:奇怪的是,我在某个地方的 stackoverflow 上发现了这段代码,但是用这个调用而不是我的调用:
$.getJSON('http://www.panoramio.com/wapi/data/get_photos?v=1&key=dummykey&tag=test&offset=0&length=20&callback=?&minx=-30&miny=0&maxx=0&maxy=150',
function(json) {
alert(json.photos[1].photoUrl);
});
这个有效。为什么剑道没有?