ASP.NET MVC - 从IIS接收Json响应时出现问题

Ren*_*Ren 2 iis asp.net-mvc jquery json asp.net-mvc-4

请参阅下面的屏幕截图.我从控制器返回Json结果来填充级联下拉列表.从visual studio运行时,应用程序运行得非常好,但是当从iis服务器运行时,下拉列表根本不会被过滤(抛出404).我真的很困惑.任何帮助,将不胜感激.谢谢.

在pic中,顶部的那个是从VS运行时,底部的那个是从iis通过Intranet运行时.

我已根据要求附加了下面的代码,但正如我上面提到的,从Visual Studio运行时它完全正常.

调节器

[HttpPost]
       public JsonResult FilterByDivision(string divisionId)
        {
            try
            {
                using (ctx)
                {
                    var SubDivResults = (from q in ctx.Test
                                           where q.divId== divisionId
                                           select new Models.SubDivisionDTO
                                           {
                                               SubDivID = q.subdivId,
                        SubDiv = q.SubDiv

                                           }).Distinct().ToList();
                    ajaxLookup.SubDiv = SubDivResults;           


                }
                JsonResult result = new JsonResult();
                    result.Data = ajaxLookup;
                      return result;
                }

            catch (Exception)
            {
                throw;
            }
        }
Run Code Online (Sandbox Code Playgroud)

jQuery的

//按部门筛选

$(function () {
$("select#DivisionId").change(function (evt) {
if ($("select#DivisionId").val() != "-1") {
$.ajax({
url: "/AjaxDropDown/FilterByDivision",
type: 'Post',
data: { divisionId: $("select#DivisionId").val() },
success: function (data) {
var subDivItems = "<option value='" + "-1" + "'>" + "Please Select" + "</option>";
$.each(data.subDivisions, function (i, val) {
subDivItems += "<option value='" + val.subDivId + "'>" + val.subDivName + "</option>";
});
$("select#subDivId").empty().html(subDivItems);
}
});
}
});
});
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

And*_*eza 5

例如,如果您正在从jQuery进行调用,请检查路径,因为您获得的是404.您可能正在虚拟目录中运行应用程序,并且您正在从javascript调用绝对路径.

对于404结果,这可能是你的问题.

从您的代码片段中可能存在以下问题:

$.ajax({
    url: "/AjaxDropDown/FilterByDivision",
    ...
});
Run Code Online (Sandbox Code Playgroud)

你应该在这个表格上有一些东西:

$(function () {
    $("select#DivisionId").change(function (evt) {
        var resourceAddress = '@Url.Content("~/AjaxDropDown/FilterByDivision")';

        if ($("select#DivisionId").val() != "-1") {
            $.ajax({
                url: resourceAddress,
                type: 'Post',
                data: {
                    divisionId: $("select#DivisionId").val()
                },
                success: function (data) {
                    var subDivItems = "<option value='" + "-1" + "'>" + "Please Select" + "</option>";
                    $.each(data.subDivisions, function (i, val) {
                        subDivItems += "<option value='" + val.subDivId + "'>" + val.subDivName + "</option>";
                    });
                    $("select#subDivId").empty().html(subDivItems);
                }
            });
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

这会给你一次相对路径.