Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jquery从odata wcf服务获取json_Jquery_Html_Json - Fatal编程技术网

使用jquery从odata wcf服务获取json

使用jquery从odata wcf服务获取json,jquery,html,json,Jquery,Html,Json,所以,我有(事实上我们都有)这个由Telerik Kendo UI提供的很酷的WCF Odata服务,例如:(使用工作链接更新)。这对于测试来说是非常困难的 我想从javascript调用它,并将结果显示为警报。所以,我的代码是: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <ht

所以,我有(事实上我们都有)这个由Telerik Kendo UI提供的很酷的WCF Odata服务,例如:(使用工作链接更新)。这对于测试来说是非常困难的

我想从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>

这一个有效。为什么剑道没有?

你在打一个跨原点电话。出于安全原因,浏览器不直接允许这些操作。跨源调用表示您正在从另一个域、协议或其他端口调用url。意思是如果您的代码处于启用状态
http://demos.kendoui.com/yourpage
您不会得到错误

首先,不要只在本地文件系统上运行代码。将其放在Web服务器上。然后您将得到一个类似的错误('访问控制允许源不允许'),但是

您有两个选择:

如果您可以控制服务器:

  • (=跨源重源共享;发送额外的头信息)
  • (=带填充的json;使用回调方法包装json)
如果您无法控制服务器:

  • 使用(服务器上获取数据并传递数据的脚本)
更新:


为什么它与panoramio url一起工作?服务器已启用jsonP。通过放置:
callback=?
jquery知道它应该使用jsonP并填充回调。试试看,然后检查chrome开发者工具中的网络选项卡。您将看到已填充回调参数,并且响应以该函数开始。

好的,多亏了VDP,我已经成功地对代码进行了装配,因此它甚至可以与剑道一起工作。由于我无法访问他们的服务器,他们似乎已经实现了jsonp

这是工作代码,正如前面所说,所有需要的东西-添加$callback=?

$.getJSON('http://demos.kendoui.com/service/Northwind.svc/Tasks(4)/Start?$format=json&$callback=?',
    function(json) {
    alert(json.d.Start);
});

您可以参考此链接:@prot,不确定,但由于这将是跨域的,您不应该以某种方式使用jsonp吗。
$.getJSON('http://demos.kendoui.com/service/Northwind.svc/Tasks(4)/Start?$format=json&$callback=?',
    function(json) {
    alert(json.d.Start);
});