【问题标题】:Consuming OData from jquery ajax Error : "SCRIPT1004: SCRIPT1004: Expected ';'"从 jquery ajax 使用 OData 错误:“SCRIPT1004: SCRIPT1004: Expected ';'”
【发布时间】:2020-09-09 01:21:53
【问题描述】:

我使用下面的链接创建了一个 odata web api Microsoft Doc OData V4 Link

所以我的解决方案包含两个项目

  1. ODATAWebApi
  2. Web 应用程序

请找到代码 WebApp 代码

$(document).ready(function (e) {
$.ajax({
    url: 'https://localhost:44340/',
    type: 'GET',
    crossDomain: true,
    dataType: 'jsonp',
    "headers": {
        "accept": "application/json",
        "Access-Control-Allow-Origin": "*"
    },
    success: function (data) {
        alert('Data: ' + data);
    },
    error: function (request, error) {
        console.log("Request: " + JSON.stringify(request));
        alert("Request: " + JSON.stringify(request));
    }
});

});

WebApi 代码

public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services

            // Web API routes
            config.MapHttpAttributeRoutes();

            ODataModelBuilder builder = new ODataConventionModelBuilder();
            builder.EntitySet<Product>("Products");

            config.MapODataServiceRoute(
                routeName: "odata",
                routePrefix: null,
                model: builder.GetEdmModel());

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }

// GET: odata/Products
    [EnableQuery]
    public IQueryable<Product> GetProducts()
    {
        return db.Products;
    }

当我尝试使用 jquery ajax 使用此 odata 我遇到了错误

1) Request: {"readyState":4,"status":200,"statusText":"load"}

2) SCRIPT1004: SCRIPT1004: Expected ';'     localhost:44340 (1,18)
    {"@odata.context":"https://localhost:44340/$metadata",
      "value":[{"name":"Products","kind":"EntitySet","url":"Products"}]}

请帮帮我

【问题讨论】:

    标签: jquery ajax asp.net-web-api odata


    【解决方案1】:

    感谢我的同事的帮助,我能够做到这一点..

    如果您使用的是 OData V4,

    使用 System.Web.Http.OData 替换;随着使用 Microsoft.AspNet.OData;

    在 WebApiConfig.Register 方法中添加以下代码

            ODataModelBuilder builder = new ODataConventionModelBuilder();
            builder.EntitySet<Product>("Products");
    
            var corsAttr = new EnableCorsAttribute("*", "*", "*");
            config.EnableCors(corsAttr);
    
            config.MapODataServiceRoute("ODataRoute", "api", builder.GetEdmModel());
    

    下面是Ajax代码

    $.ajax({
        url: 'https://localhost:44340/api/Products(1)',
        type: 'GET',
        crossDomain: true,
        dataType: 'json',      
        success: function (data) {
            alert('Data: ' + data);
        },
        error: function (request, error) {
            console.log("Request: " + JSON.stringify(request));
            alert("Request: " + JSON.stringify(request));
        }
    });
    

    网址:https://localhost:44340/api/Products(1) 这有效..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-03
      • 1970-01-01
      • 2014-04-26
      • 1970-01-01
      • 2013-06-15
      • 2014-06-22
      • 2016-05-13
      相关资源
      最近更新 更多