Rob*_*ert 1 c# asp.net-mvc jquery
我的代码进行了ajax调用:
$.ajax({
url: "/Controller/EmailUserKeys",
dataType: 'json',
success: function () {
alert('success');
},
error: function () {
alert('error');
}
});
Run Code Online (Sandbox Code Playgroud)
它在我的控制器中调用一个返回一些JSON的动作:
public JsonResult EmailUserKeys(string UserId)
{
...
return Json(new { success = true });
}
Run Code Online (Sandbox Code Playgroud)
我的问题是调用ajax错误函数而不是ajax成功函数.
为什么?
PS.如果我的动作返回"return null;",则调用ajax success函数.
您必须允许在返回JSON结果时默认禁用的GET:
public JsonResult EmailUserKeys(string UserId)
{
...
return Json(new { success = true }, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)
或使用POST请求:
$.ajax({
url: "/Controller/EmailUserKeys",
type: "POST",
dataType: 'json',
data: { userId: 'some user id' },
success: function () {
alert('success');
},
error: function () {
alert('error');
}
});
Run Code Online (Sandbox Code Playgroud)
也永远不要像你那样硬编码你的控制器动作的URL.在ASP.NET MVC应用程序中处理URL时,始终使用url帮助程序:
url: "@Url.Action("EmailUserKeys", "Controller")",
Run Code Online (Sandbox Code Playgroud)
这里有一条建议:如果您正在进行任何Web开发,请使用诸如FireBug之类的javascript调试工具.除了其他有用的东西,它还允许您检查AJAX请求.如果您已经使用它,您会看到从服务器发送的响应,如下所示:
此请求已被阻止,因为当在GET请求中使用敏感信息时,可能会向第三方网站公开敏感信息.要允许GET请求,请将JsonRequestBehavior设置为AllowGet.
你不需要来StackOverflow并提出这个问题,因为你已经知道了答案.
您应该将代码编辑为:
public JsonResult EmailUserKeys(string UserId)
{
return Json(new { success = true }, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅官方文档:
http://msdn.microsoft.com/en-us/library/system.web.mvc.jsonrequestbehavior.aspx
默认情况下禁用此功能的原因是因为JSON劫持.有关这方面的更多信息,请访问:
http://haacked.com/archive/2009/06/25/json-hijacking.aspx
希望这可以帮助你!
| 归档时间: |
|
| 查看次数: |
7246 次 |
| 最近记录: |