如何解决Javascript错误:“发生错误,没有数据处理程序”?

时间:2014-02-27 11:03:25

标签: javascript odata

我正在尝试使用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>

2 个答案:

答案 0 :(得分:0)

我这样做了:

  1. 使用datajs-1.1.2.min.js而不是datajs-1.0.1.min.js。

  2. 在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);
        });
    
      });
    
  3. 可能会低于帮助你。

    http://datajs.codeplex.com/workitem/392

    https://datajs.codeplex.com/discussions/344801

答案 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