C# jQuery$.ajax成功未从JsonResult触发
我的代码进行ajax调用:C# jQuery$.ajax成功未从JsonResult触发,c#,asp.net-mvc,jquery,C#,Asp.net Mvc,Jquery,我的代码进行ajax调用: $.ajax({ url: "/Controller/EmailUserKeys", dataType: 'json', success: function () { alert('success'); }, error: function () { alert('error'); } }); 它在我的控制器中调用一个操作,该操作返回一些JSON: public JsonResult E
$.ajax({
url: "/Controller/EmailUserKeys",
dataType: 'json',
success: function () {
alert('success');
},
error: function () {
alert('error');
}
});
它在我的控制器中调用一个操作,该操作返回一些JSON:
public JsonResult EmailUserKeys(string UserId)
{
...
return Json(new { success = true });
}
我的问题是调用了ajax错误函数,而不是ajax成功函数
为什么?
注:如果我的操作返回“return null;”,则调用ajax success函数。您应该将代码编辑为:
public JsonResult EmailUserKeys(string UserId)
{
return Json(new { success = true }, JsonRequestBehavior.AllowGet);
}
有关更多信息,请参阅官方文档:
默认情况下禁用此功能的原因是JSON劫持。有关这方面的更多信息,请参见:
希望这对你有帮助 您应该将代码编辑为:
public JsonResult EmailUserKeys(string UserId)
{
return Json(new { success = true }, JsonRequestBehavior.AllowGet);
}
有关更多信息,请参阅官方文档:
默认情况下禁用此功能的原因是JSON劫持。有关这方面的更多信息,请参见:
希望这对你有帮助 返回JSON结果时,必须允许默认禁用的GET:
public JsonResult EmailUserKeys(string UserId)
{
...
return Json(new { success = true }, JsonRequestBehavior.AllowGet);
}
或使用POST请求:
$.ajax({
url: "/Controller/EmailUserKeys",
type: "POST",
dataType: 'json',
data: { userId: 'some user id' },
success: function () {
alert('success');
},
error: function () {
alert('error');
}
});
也不要像您那样硬编码控制器操作的url。在ASP.NET MVC应用程序中处理url时始终使用url帮助程序:
url: "@Url.Action("EmailUserKeys", "Controller")",
这里有一条建议:使用javascript调试工具,比如进行任何web开发。除了其他有用的功能外,它还允许您检查AJAX请求。如果您使用了它,您将看到从服务器发送的响应,该响应如下所示:
此请求已被阻止,因为可能会丢失敏感信息
在GET请求中使用时向第三方网站披露。
要允许GET请求,请将JsonRequestBehavior设置为AllowGet
您不必到StackOverflow来问这个问题,因为您已经知道了答案。您必须允许GET,返回JSON结果时默认禁用GET:
public JsonResult EmailUserKeys(string UserId)
{
...
return Json(new { success = true }, JsonRequestBehavior.AllowGet);
}
或使用POST请求:
$.ajax({
url: "/Controller/EmailUserKeys",
type: "POST",
dataType: 'json',
data: { userId: 'some user id' },
success: function () {
alert('success');
},
error: function () {
alert('error');
}
});
也不要像您那样硬编码控制器操作的url。在ASP.NET MVC应用程序中处理url时始终使用url帮助程序:
url: "@Url.Action("EmailUserKeys", "Controller")",
这里有一条建议:使用javascript调试工具,比如进行任何web开发。除了其他有用的功能外,它还允许您检查AJAX请求。如果您使用了它,您将看到从服务器发送的响应,该响应如下所示:
此请求已被阻止,因为可能会丢失敏感信息
在GET请求中使用时向第三方网站披露。
要允许GET请求,请将JsonRequestBehavior设置为AllowGet
您不必到StackOverflow来问这个问题,因为您已经知道答案了。谢谢您的回答。这也说明了如何解决我的问题@Darin Dimitrov还提到Firebug允许您查看AJAX请求,我认为这将对其他用户有所帮助。没问题,很高兴它帮助了您!谢谢你的回答。这也说明了如何解决我的问题@Darin Dimitrov还提到Firebug允许您查看AJAX请求,我认为这将对其他用户有所帮助。没问题,很高兴它帮助了您!谢谢你,达林。我不知道FireBug允许我检查AJAX请求。我已经安装了它,下次当我遇到AJAX问题时,我会使用它。@Robert,不,不,不仅仅是当你遇到AJAX问题时。当您遇到javascript问题时,请始终使用它。FireBug做的事情比AJAX检查多得多。谢谢你,达林。我不知道FireBug允许我检查AJAX请求。我已经安装了它,下次当我遇到AJAX问题时,我会使用它。@Robert,不,不,不仅仅是当你遇到AJAX问题时。当您遇到javascript问题时,请始终使用它。FireBug做的事情比AJAX检查多得多。