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

在图片中,最上方的是从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;
            }
        }


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

最佳答案

例如,如果要从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);
                }
            });
        }
    });
});


每次都会给您一条相对路径。

关于jquery - ASP.NET MVC-从IIS接收Json响应时出现问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15642647/

10-13 07:46
查看更多