如何解决成功的ajax调用未返回成功功能
我正在开发.NET Core MVC应用程序,我在部分视图中添加了JavaScript代码,该JavaScript代码正在达到控制器的功能,但没有达到Ajax调用的成功功能。 下面是我的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>
控制器代码:-
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版开始)拒绝空响应。响应应为null
或{}
,而不是空字符串。它还拒绝格式错误的JSON
,但在这种情况下不太可能,因为您正在使用库来生成JSON
。 -
这可能是因为您的返回类型为
string
,因此Content-Type
标头变成了text/plain
。尝试使用其中任何一个
- 在您的
dataType: 'text json'
通话中使用jQuery
。这将告诉jQuery将文本视为JSON
。 - 或使用
JSON
作为返回类型从MVC控制器返回string
而不是JsonResult
。这应该导致Content-Type
标头设置为application/json
。
这是详细的规范(请参见dataType
)
https://api.jquery.com/Jquery.ajax/
,它没有达到Ajax调用的成功功能
根据您的代码,我们可以发现您的操作方法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错误)等是否有问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。