【问题标题】:JSON error while consuming OData with WCF data services使用 WCF 数据服务使用 OData 时出现 JSON 错误
【发布时间】:2012-10-28 10:42:33
【问题描述】:

我正在使用 Visual Studio 2012。我创建了一个名为 ODataService 的空 Web 应用程序项目,并添加了一个 SQL Server Compact 4.0 本地数据库,然后添加了一个与本地数据库映射的 ADO.NET 实体数据模型。现在添加了一个使用实体模型的 WCF 数据服务。所有这些都在一个项目下,即 ODataService。创建后,我可以轻松地从浏览器查询数据:

i.e. http://localhost:52964/EmployeeService.svc/Employees()?$filter=ID gt 3

现在我在拥有 ODataService 项目的同一解决方案下添加了一个 MVC3 应用程序。在那个 MVC3 项目中,我在 Index.cshtml 中编写了以下代码,以使用 jquery 使用 odata:

<script type="text/javascript">
$(document).ready(function () {
var qry = "http://localhost:52964/EmployeeService.svc/Employees?$filter=ID gt 3&$callback=callback&$format=json";
    var qry2 = "http://odata.netflix.com/v2/Catalog/Titles?$filter=ReleaseYear gt 2012&AverageRating gt 4&$callback=callback&$format=json";
    $('#loadData').click(function () {
        $('#loadingText').text('loading data...');


        $.ajax({
            dataType: "jsonp",
            url: qry,
            jsonpCallback: "callback",
            success: callback,
            error: function (jqXHR, textStatus, errorThrown) {
                debugger;
            }

        });

    });

    function callback(result) {
        debugger;
    }
});

当我使用 qry2 时,我的代码运行良好,但是当使用 qry 时,调试器会在错误部分命中并显示“parsererror” - “callback was not called”。

感谢任何形式的帮助。

【问题讨论】:

  • 您的 Web 服务是否将 json 对象包装在 callback( /* json*/) 中?您是否验证了它在 jsonlint.com 中生成的 json?

标签: jquery json wcf-data-services odata


【解决方案1】:

您是否在数据服务中添加了对 JSONP 的支持?您可以查看http://archive.msdn.microsoft.com/DataServicesJSONP 以获取有关如何执行此操作的说明。

更好的选择可能是使用 WCF 数据服务 5.1.0-rc2,它增加了对 $format/$callback 的内置支持:http://blogs.msdn.com/b/astoriateam/archive/2012/09/26/wcf-data-service-5-1-0-rc2-released.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多