簡體   English   中英

成功 ajax 調用不返回成功 function

[英]successful ajax call not returning to success function

我正在處理一個 .NET Core MVC 應用程序,我在局部視圖中添加了 JavaScript 代碼,JavaScript 代碼命中 controller 的 function 但它沒有命中 881567 調用 883400406589204 的成功下面是我的 JavaScript 代碼,代碼在頁面加載時執行

 <script type="text/javascript"> $(document).ready(function () { debugger; $.ajax({ type: 'GET', url: '@Url.Action("getMenurights","Home")', dataType: 'json', contentType: "application/json; charset=utf-8", success: OnSuccessMenuRights, failure: function (data) { alert(data); } }); }); </script>

controller 代碼:-

     public string getMenuRights()
     {
        string result = "";
        if (!string.IsNullOrEmpty(HttpContext.Session.GetString("UserId")as string))
        {

            Home objHome = new Home();
            DataTable dtMenuRights = new DataTable();
            dtMenuRights = objHome.GetMenuRights(HttpContext.Session.GetString("UserId").ToString());
            List<DataRow> MenuList = dtMenuRights.AsEnumerable().ToList();

            TempData["MenuRights"] = dtMenuRights;
            if (MenuList.Count > 0)
            {
                ViewBag.MenuList = MenuList;
            }
            TempData.Keep("MenuRights");
            //var x = TempData["MenuRights"];
            JsonSerializerSettings jss = 
            new JsonSerializerSettings { ReferenceLoopHandling =ReferenceLoopHandling.Ignore };
            result = JsonConvert.SerializeObject(dtMenuRights, Formatting.Indented, jss);
        
        }
        return result;
    }

試試這些

  1. 如果用戶沒有jQuery ,您將返回空字符串。從 1.9 開始,jQuery 拒絕空響應。 響應應為null{} ,而不是空字符串。 它還拒絕格式錯誤的JSON但在這種情況下不太可能,因為您正在使用庫生成JSON

  2. 可能是因為您的返回類型是string ,因此Content-Type header 變為text/plain 嘗試使用其中之一

  • 在您的jQuery電話中使用dataType: 'text json' 這將告訴 jQuery 將文本視為JSON
  • 或使用JsonResult作為返回類型返回JSON而不是來自 MVC controller 的string 這應該會導致Content-Type header 被設置為application/json

這是詳細規范(請參閱dataType

https://api.jquery.com/Jquery.ajax/

它沒有成功撥打 Ajax 的 function

根據您的代碼,我們可以發現您的操作方法getMenuRights()向消費者返回純文本字符串,您可以將dataType選項修改為'text' ,如下所示。

$.ajax({
    type: 'GET',
    url: '@Url.Action("getMenurights","Home")',
    dataType: 'text',
    success: OnSuccessMenuRights,
    failure: function (data) {
        alert(data);
    }

});

此外,要解決 Ajax 請求相關問題,您可以嘗試檢查您在瀏覽器 F12 開發者工具網絡選項卡中發出的 ajax 請求的響應。 並檢查您發出的請求(http 400 錯誤)或服務器端(http 500 錯誤)等是否有問題。

暫無
暫無

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

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