【问题标题】:How to consume data from API WCF service from different server and load data into combo-box如何使用来自不同服务器的 API WCF 服务的数据并将数据加载到组合框中
【发布时间】:2016-11-14 14:09:01
【问题描述】:

我之前可能已经问过这个问题,但我没有说对。我有一个下拉控件,我想使用来自不同项目/服务器的 WCF Web 服务的数据。我编写了一个小型控制台应用程序来使用数据,它工作正常。在我的控制器上,我使用了来自 API 的数据,然后将其传递给我的视图,并且工作正常。但是,这不是要求,我必须使用 ajax 调用加载所有组合框以使事情变得更容易。

这是我的工作代码:我已经硬编码了 Id 和布尔类型

控制器

    public ActionResult SearchReports()
    {

        string jsonReq = "http://localhost:50000/Administration.svc/GetAllRoles/17d7b719-7524-4297-a20d-6a6260966aad/true";
        string jsonResp = Portal.Models.JsonWrapper.JsonGET(jsonReq);
        List<Portal.Models.BProcSecurityStructs.Role> listRoles = Models.DeserialiseFromJson<List<Portal.Models.BProcSecurityStructs.Role>>.Deserialise(jsonResp);
        List<GetAllDropdownModel> RolesModelList = new List<GetAllDropdownModel>();
        foreach (BProcSecurityStructs.Role r in listRoles)
        {
            GetAllDropdownModel rm = new GetAllDropdownModel();           
            rm.roleID = r.roleID;
            rm.roleName = r.roleName;
            RolesModelList.Add(rm);
        }
        listRoles.Count();
        ViewBag.List = listRoles;
        return View(RolesModelList);
    }
    }

查看

<div class="form-group" >
   <label for="ddlroles">Roles :</label>
   <select class="form-control" name="listbox" id="dllroles">
   @foreach (var item in Model)
   {
      <option value="@item.roleId">
      @item.roleName
      </option>

   }
   </select>
</div>

试图调用 WCF API 的 Ajax 调用

  Ajax call that am trying to make WCF API call

    var API_URL = 'http://localhost:50000/Administration.svc/';
    function LoadAdministrator()
    {  
    $.ajax({
    url: API_URL + 'GetAdministratorByID/{loggedID}/{roleId}',
    Type: 'Get',
    DataType: 'jason',
    crossDomain: true,
    sucess: function (data) {
        for (var i = 0; i < data.length; i++) {
            $("#ddlroles").append('<Option value= "' + dat[i].roleId + '">"' + data[i].roleName + '"</Option>').text("-- Select --")
        }
    }
});
}

错误: 请求的资源上不存在“Access-Control-Allow-Origin”标头。产地

我试过这个Code Project Example 没有运气。请帮忙

【问题讨论】:

    标签: jquery ajax asp.net-mvc-4 c#-4.0 wcf-data-services


    【解决方案1】:

    如果要加载数据 Ajax,只需创建返回 JsonResult 的新 Action

        [HttpGet]
        public JsonResult SearchReports()
        {
    
            string jsonReq = "http://localhost:50000/Administration.svc/GetAllRoles/17d7b719-7524-4297-a20d-6a6260966aad/true";
            string jsonResp = Portal.Models.JsonWrapper.JsonGET(jsonReq);
            List<Portal.Models.BProcSecurityStructs.Role> listRoles = Models.DeserialiseFromJson<List<Portal.Models.BProcSecurityStructs.Role>>.Deserialise(jsonResp);
            List<GetAllDropdownModel> RolesModelList = new List<GetAllDropdownModel>();
            foreach (BProcSecurityStructs.Role r in listRoles)
            {
                GetAllDropdownModel rm = new GetAllDropdownModel();
                rm.roleID = r.roleID;
                rm.roleName = r.roleName;
                RolesModelList.Add(rm);
            }
    
            return Json(yourList, JsonRequestBehavior.AllowGet);
        }
    

    然后使用 Ajax 调用此操作

    function LoadAdministrator()
    { 
       $.ajax({
            url: 'Controller/CancelApplication',
            success: function (data) {
                for (var i = 0; i < data.length; i++) {
            $("#ddlroles").append('<Option value= "' + dat[i].roleId + '">"' + data[i].roleName + '"</Option>').text("-- Select --")
        }
            }
        });
    }
    

    就是这样,我一直在努力为我的问题找到最简单的解决方案,而不是最难的。

    【讨论】:

    • @Ahmed..我收到此错误请求的资源上不存在“Access-Control-Allow-Origin”标头。产地
    • @MrJunior 你从 Ajax 调用你自己的 API .. 对吗?我正在考虑控制器和操作而不是 WCF
    • 是的。我已经调用了我的控制器和操作。现在收到此错误:加载资源失败:服务器响应状态为 404(未找到)
    • @MrJunior 把 URL 改成你的 URL,我刚刚给你的想法,把 Controller 换成你的 Controller Name 并告诉我结果
    • 不,它根本不起作用。收到此错误:请求的资源上不存在“Access-Control-Allow-Origin”标头。 Origin 'localhost:53***' 因此不允许访问。响应的 HTTP 状态代码为 404。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多