![](/img/trans.png)
[英]Why ajax call not returning success or error though controller sends data?
[英]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;
}
试试这些
如果用户没有jQuery
,您将返回空字符串。从 1.9 开始,jQuery 拒绝空响应。 响应应为null
或{}
,而不是空字符串。 它还拒绝格式错误的JSON
但在这种情况下不太可能,因为您正在使用库生成JSON
。
可能是因为您的返回类型是string
,因此Content-Type
header 变为text/plain
。 尝试使用其中之一
jQuery
电话中使用dataType: 'text json'
。 这将告诉 jQuery 将文本视为JSON
。JsonResult
作为返回类型返回JSON
而不是来自 MVC controller 的string
。 这应该会导致Content-Type
header 被设置为application/json
。 这是详细规范(请参阅dataType
)
它没有成功拨打 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.