[英]WebAPI Controller redirects to raw JSON view when called via jQuery
我有一个ASP.NET MVC应用程序。 我正在尝试调用WebAPI控制器。 当我通过jQuery中的$ .get调用控制器时,它工作正常。 完成回调函数后,所有操作都应停止,并且我应该能够看到我的网页。 但是,完成回调函数后,浏览器将我带到chrome中的原始JSON视图页面。 在IE中,它询问我是否要下载返回的.json文件。 为什么会这样呢? 这是我的代码:
function onNLookupSearch() {
var uri = window.location.protocol + "//" + window.location.host;
var searchTerm = $("#nlookupsearch").val();
var resultUrl = window.location.href = uri + "/api/v1/GetNetworkName?networkName=" + searchTerm;
$.get(resultUrl, function (data1) {
localData1 = data1;
$("#sdnetworkselect").kendoDropDownList({
dataSource: localData1,
dataTextField: "NETWORK_NAME",
dataValueField: "NETWORK_ID"
});
$("#hdnetworkselect").kendoDropDownList({
dataSource: localData1,
dataTextField: "NETWORK_NAME",
dataValueField: "NETWORK_ID"
});
});
}
这是我的WebAPI控制器代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using CPT2.Data;
namespace CPT2.Controllers
{
public class GetNetworkNameController : ApiController
{
private CMDBdbContext _ctx;
public GetNetworkNameController(CPT2.Data.CMDBdbContext ctx)
{
_ctx = ctx;
}
public IQueryable<CPT2.Data.network_sourceid_map> Get([FromUri] string networkName)
{
var result =
_ctx.network_sourceid_map.Where(
nw => nw.NETWORK_NAME.Contains(networkName) || nw.SOURCE_NAME.Contains(networkName));
var myList = result.Select(item => item.NETWORK_NAME + " - " + item.SOURCE_NAME + " [" + item.SOURCE_ID + "]").ToList();
//return myList;
return result;
}
}
}
假设我搜索“ ESPN”。 那就是上面代码中的搜索词。
完成此功能后,我应该停留在页面上,但是Chrome浏览器将我重定向到返回数据的原始视图,并且IE要求我保存JSON文件。
我认为您的问题是此行:
var resultUrl = window.location.href = uri + "/api/v1/GetNetworkName?networkName=" + searchTerm;
您正在设置window.location.href,它将整个页面重定向到API“页面”,这就是为什么要获取.json文件的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.