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

WebAPI Controller redirects to raw JSON view when called via jQuery

本文关键字:重定向 原始 JSON 视图 调用 控制器 jQuery WebAPI      更新时间:2023-09-26

我有一个 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 文件的原因。