我正在尝试使用OData,我正在尝试捕获下面请求链接中的所有“类别”。每个类别将以div显示。当我尝试检查页面时,它给出了以下错误消息:发生错误,没有数据处理程序。它只是给了我一个空白页面。如何解决这个问题呢?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("jquery", "1"); // 1.5.2
</script>
<script type="text/javascript" src="datajs-1.0.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
OData.defaultHttpClient.enableJsonpCallback = true;
OData.read("http://services.odata.org/Northwind/Northwind.svc/Categories",
function(data, request) {
var html = "";
for (var i = 0; i < data.results.length; i++) {
html += "<div>" + data.results[i].Name + "</div>";
}
document.getElementById("Categories").innerHTML = html;
},
function(err) {
alert("Error occurred " + err.message);
});
});
</script>
<title>Categories</title>
</head>
<body>
<div id="Categories"></div>
</body>
</html>
答案 0 :(得分:0)
我这样做了:
使用datajs-1.1.2.min.js而不是datajs-1.0.1.min.js。
在for循环中更改:
$(document).ready(function () {
OData.defaultHttpClient.enableJsonpCallback = true;
OData.read("http://services.odata.org/Northwind/Northwind.svc/Categories", function (data, request) {
var html = "";
for (var i = 0; i < data.results.length; i++) {
html += "<div>" + data.results[i].CategoryName + "</div>";
}
document.getElementById("Categories").innerHTML = html;
}, function (err) {
alert("Error occurred " + err.message);
});
});
可能会低于帮助你。
答案 1 :(得分:0)
如果您的服务使用OData版本4,那么DataJs将调用错误处理程序,因为它不知道如何解析响应。如果你查看datajs.js文件,你会看到&#34; 3.0&#34;在那里硬编码,意味着这是为其设计的版本。
以下是截至2014年5月的状态报告,其中确认了以上内容:http://www.odata.org/blog/status-updates-of-odata-libraries-that-support-odata-version-4-0/。似乎没有任何关于datajs的更新来处理OData v4。
对于OData版本4,您可以使用另一个名为Olingo的JavaScript库,如下所述:http://olingo.apache.org/doc/javascript/index.html
您可以使用的另一个库是BreezeJs,其中包含适用于版本4的适配器。请参阅另一个问题:Breeze | datajs - no handler for data