繁体   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