2

请看下面的截图。我正在从控制器返回 Json 结果以填充级联下拉列表。当从 Visual Studio 运行时,该应用程序运行良好,但从 iis 服务器运行时,下拉菜单根本不会被过滤(抛出 404)。我真的很困惑。任何帮助,将不胜感激。谢谢。

图中,上图是从VS运行时,下图是从iis通过内网运行时。

我已按要求附上了下面的代码,但就像我上面提到的,从 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;
            }
        }

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);
}
});
}
});
});

在此处输入图像描述

4

2 回答 2

5

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

对于 404 结果,这可能是您的问题。

从您的代码片段中,问题可能出在此处:

$.ajax({
    url: "/AjaxDropDown/FilterByDivision",
    ...
});

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

$(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);
                }
            });
        }
    });
});

这每次都会给你一个相对路径。

于 2013-03-26T16:51:23.167 回答
0

查看 IIS 日志文件并检查 HTTP 子状态代码。它将提供一些有关导致 404 错误的原因的附加信息。请参阅IIS 7.0、IIS 7.5 和 IIS 8.0 中的 HTTP 状态代码。如果您的子状态代码为 0 或 1,则您可能没有正确的 URL,或者您的文件实际上可能从服务器中丢失。如果还有其他问题,您还有其他问题,发布子状态代码会有所帮助。

如果您确实有 0 或 1 的子状态代码,Anderson Fortaleza 的回答可能是正确的。

于 2013-03-26T17:18:57.700 回答