2

下のスクリーンショットをご覧ください。カスケードドロップダウンにデータを入力するために、コントローラーからJsonの結果を返します。Visual Studioから実行すると、アプリケーションは完全に正常に動作しますが、iisサーバーから実行すると、ドロップダウンはまったくフィルター処理されません(404がスローされます)。私は本当に混乱しています。どんな助けでもいただければ幸いです。ありがとう。

写真では、上の1つはVSから実行された場合で、下の1つはiisからイントラネットを介して実行された場合です。

要求に応じて以下のコードを添付しましたが、上記のように、VisualStudioから実行すると完全に正常に機能します。

コントローラ

[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、およびIIS8.0のHTTPステータスコードを参照してください。サブステータスコードが0または1の場合、正しいURLがないか、ファイルが実際にサーバーから欠落している可能性があります。それ以外の場合は、他の問題があり、サブステータスコードを投稿すると役立ちます。

サブステータスコードが0または1の場合、アンダーソンフォルタレザはおそらく彼の答えで正しいでしょう。

于 2013-03-26T17:18:57.700 に答える