【问题标题】:How to solve Javascript error: "Error occurred, no handler for data"?如何解决 Javascript 错误:“发生错误,没有数据处理程序”?
【发布时间】:2017-12-17 05:34:22
【问题描述】:

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

【问题讨论】:

    标签: javascript odata


    【解决方案1】:

    我是这样做的:

    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);
          });
      
        });
      

    下面的可能会对你有所帮助。

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

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

    【讨论】:

      【解决方案2】:

      如果您的服务使用 OData 版本 4,则 DataJs 将调用错误处理程序,因为它不知道如何解析响应。如果您查看 datajs.js 文件,您会在其中看到硬编码的“3.0”,这意味着这是为其设计的版本。

      这是一份截至 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

      【讨论】:

        猜你喜欢
        • 2020-03-10
        • 1970-01-01
        • 2021-05-08
        • 2021-12-14
        • 1970-01-01
        • 2017-10-10
        • 2020-12-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多