簡體   English   中英

發布應用程序后,Asp.net MVC 5 Ajax POST 拋出異常 404(未找到)

[英]Asp.net MVC 5 Ajax POST throws exception 404 (Not Found) after application is published

本地一切正常(當我使用本地主機運行時),但是在我發布到 IIS 並運行后,它在瀏覽器控制台中引發異常

POST http://xx.xxx.xx/Dashboard/FilterData 404(未找到)

下面是我的代碼,我使用一個按鈕來調用這個 javascript 函數

VIEW - 索引

<script type="text/javascript">

    function btnFilterClick() {

        var txtFDate = $("#dpFrom");
        var txtTDate = $("#dpTo");
        var ddBranches = $("#ddBranches");
        var ddBrands = $("#ddBrands");

        $.ajax({
            type: "POST",
            url: "/Dashboard/FilterData",
            data: '{FromDate: "' + txtFDate.val() + '", ToDate: "' + txtTDate.val() + '", SelectedBranches : "'+ ddBranches.val()+'", SelectedBrands : "'+ ddBrands.val()+'" }',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success:
                function (r)
                {
                    chartPurchaseVsSales.data.datasets[0].data = r.listSalesData;
                    chartPurchaseVsSales.data.datasets[1].data = r.listPurchaseData;
                    chartPurchaseVsSales.data.labels = r.xAxisNameForPurchaseAndSales;
                    chartPurchaseVsSales.update();


                }
        });


    }

    </script>

控制器 - 儀表板控制器

    [HttpPost]
    [Authorize]
    public JsonResult FilterData(DashboardModel modelX)
    {
        DashboardModel model = new DashboardModel();
        model.xAxisNameForPurchaseAndSales = new string[] { };
        model.xAxisNameForStock = new string[] { };



        *Skipped some codes to make it simple*

        return Json(model);

    }

知道這里有什么問題嗎? 我是網絡開發的新手! 幫我!

我改為'@Url.Action("FilterData", "Dashboard")'並且它工作正常! 謝謝你們。

下面是我的代碼

 $.ajax({
        type: "POST",
        url: '@Url.Action("FilterData", "Dashboard")',
        data: '{FromDate: "' + txtFDate.val() + '", ToDate: "' + txtTDate.val() + '", SelectedBranches : "'+ ddBranches.val()+'", SelectedBrands : "'+ ddBrands.val()+'" }',
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success:
            function (r)
            {
                chartPurchaseVsSales.data.datasets[0].data = r.listSalesData;
                chartPurchaseVsSales.data.datasets[1].data = r.listPurchaseData;
                chartPurchaseVsSales.data.labels = r.xAxisNameForPurchaseAndSales;
                chartPurchaseVsSales.update();


            }
    });

解決方案1

您可以從url: "/Dashboard/FilterData",更改url: "/Dashboard/FilterData",如下所示

url: '@Url.Action("FilterData", "Dashboard")'

解決方案2

在 HTML 中

<input type="hidden" value="@Url.Action("FilterData", "Dashboard")" id='url' />

在jQuery中

url: $("#url").val()

在 IIS 上發布后,您需要將 ajax 請求中的URL更改為URL: '/YourAppName/Controller/ActionResult' 這就是 URL 不應該被硬編碼的原因。 您可以在剃刀頁面中使用隱藏字段並填充 URL,如 @Url.Action("FilterData", "Dashboard") 並從那里讀取它。 我希望它有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM