Javascript 当通过jQuery调用时,WebAPI控制器重定向到原始JSON视图

Javascript 当通过jQuery调用时,WebAPI控制器重定向到原始JSON视图,javascript,jquery,json,asp.net-web-api,kendo-ui,Javascript,Jquery,Json,Asp.net Web Api,Kendo Ui,我有一个ASP.NETMVC应用程序。我正在尝试调用WebAPI控制器。当我通过$.get在jQuery中调用控制器时,它工作正常。完成回调函数后,一切都应该停止,我应该能够看到我的网页。然而,在完成回调函数后,浏览器将带我进入chrome中的原始JSON视图页面。在IE中,它询问我是否要下载返回的.json文件。为什么会发生这种情况。这是我的密码: function onNLookupSearch() { var uri = window.location.protocol + "//

我有一个ASP.NETMVC应用程序。我正在尝试调用WebAPI控制器。当我通过$.get在jQuery中调用控制器时,它工作正常。完成回调函数后,一切都应该停止,我应该能够看到我的网页。然而,在完成回调函数后,浏览器将带我进入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;
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
Net系统;
使用System.Net.Http;
使用System.Web.Http;
使用CPT2.数据;
命名空间CPT2.Controllers
{
公共类GetNetworkNameController:ApicController
{
私有CMDBBContext\u ctx;
公共GetNetworkNameController(CPT2.Data.CMDBdbContext ctx)
{
_ctx=ctx;
}
公共IQueryable Get([FromUri]字符串networkName)
{
var结果=
_ctx.network\u sourceid\u 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();
//返回myList;
返回结果;
}
}
}
假设我搜索“ESPN”。这是上面代码中的搜索词


完成此功能后,我应该留在页面上,但Chrome会将我重定向到返回数据的原始视图,IE会要求我保存一个JSON文件

我认为你的问题在于这一行:

var resultUrl = window.location.href = uri + "/api/v1/GetNetworkName?networkName=" + searchTerm;

您正在设置window.location.href,它将整个页面重定向到API“页面”,这就是为什么您会得到一个.json文件。

请澄清。你说“当我通过$.get-in-jQuery调用控制器时,它工作正常。”。它什么时候不能正常工作?您使用的是不同的jQueryAjax方法吗?当我通过get调用控制器时,我会返回JSON,并且可以在回调中处理返回的数据。但在我被重定向到这个带有原始JSON的页面之后。为什么我在$get上被重定向。这不正常,哇。我想那天我累了。很抱歉太棒了,乔希。谢谢发生在我们最好的人身上。长寿命堆栈溢出。