如何使用来自不同服务器的 API WCF 服务的数据并将数据加载到 combo-box
How to consume data from API WCF service from different server and load data into combo-box
我以前可能问过这个问题,但我没答对。我有一个 drop-down 控件,我想使用来自不同 project/server 的 WCF Web 服务的数据。我编写了一个小型控制台应用程序来使用数据,并且运行良好。在我的控制器上,我使用了来自 API 的数据,然后将其传递到我的视图并且工作正常。但是,这不是要求,我必须使用 ajax 调用加载所有 combo-box 以使事情变得更容易。
这是我的工作代码:我已经硬编码了 Id 和 boolen 类型
控制器
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>
Ajax 正在尝试调用 WCF 的调用 API
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' header。起源
我试过这个 Code Project Example 但没有成功。请帮助
如果您想加载数据 Ajax,只需创建 return JsonResult
的新操作
[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 --")
}
}
});
}
就是这样,我一直在努力为我的问题找到最简单而不是最难的解决方案。
我以前可能问过这个问题,但我没答对。我有一个 drop-down 控件,我想使用来自不同 project/server 的 WCF Web 服务的数据。我编写了一个小型控制台应用程序来使用数据,并且运行良好。在我的控制器上,我使用了来自 API 的数据,然后将其传递到我的视图并且工作正常。但是,这不是要求,我必须使用 ajax 调用加载所有 combo-box 以使事情变得更容易。
这是我的工作代码:我已经硬编码了 Id 和 boolen 类型
控制器
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>
Ajax 正在尝试调用 WCF 的调用 API
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' header。起源
我试过这个 Code Project Example 但没有成功。请帮助
如果您想加载数据 Ajax,只需创建 return JsonResult
的新操作 [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 --")
}
}
});
}
就是这样,我一直在努力为我的问题找到最简单而不是最难的解决方案。