发送Ajax请求时发生500错误
问题描述:
我已阅读此处的每篇文章,并未找到解决该问题的答案。发送Ajax请求时发生500错误
我在这个控制器的动作:
public class AccountController : Controller
{
[HttpPost]
public JsonResult CheckUsername(string i_username)
{
var MembershipProvider = new OtakimMembershipProvider();
return Json(MembershipProvider.CheckUsername(i_username));
}
}
这是View
代码:
$.ajax({
type: "POST",
url: '@Url.Action("CheckUsername", "Account")',
contentType: "application/json; charset=utf-8",
data: { 'i_username': 'silagy' },
dataType: "json",
success: function (data) {
alert(data);
},
error: function() {
}
});
现在,我不断收到此错误:
POST http://localhost:61035/Account/CheckUsername 500 (Internal Server Error)
根据帖子在这里,我用这个来产生网址:
url: '@Url.Action("CheckUsername", "Account")',
归还 - 编辑
确定,在调试模式下挖后,我发现这个问题。
错误是:“JSON基元无效:i_username。”
,并在此基础上后 "Invalid JSON primitive" in Ajax processing
我改变了我的代码如下:
var data = { "i_username": "silagy" };
$.ajax({
url: '@Url.Action("CheckUsername", "account")',
type: 'POST',
data: JSON.stringify(data),
datatype: "json",
contentType: "application/json; charset=utf-8",
error: function (xhr) {
alert('Error: ' + xhr.statusText);
},
success: function (result) {
alert(result);
}
});
答
如果您使用的contentType =应用程序/ JSON你应该json stringify
您的数据。
尝试下面的代码:
变体1:
$.ajax({
type: "POST",
url: '@Url.Action("CheckUsername", "Account")',
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ 'i_username': 'silagy' }),
// ...
});
或更改的contentType到application/x-www-form-urlencoded; charset=UTF-8
。 (其实这是jQuery的AJAX的contentType默认选项,以便只删除应用程序/ JSON会解决这个问题)
变2:
$.ajax({
type: "POST",
url: '@Url.Action("CheckUsername", "Account")',
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
data: { 'i_username': 'silagy' },
// ...
});
不,我没有,但我为什么要添加静态的,控制器不是静态类 – Silagy 2014-08-29 19:06:38
您遇到500错误,而不是404错误消息。您收到的错误消息是什么? – rossisdead 2014-08-29 19:08:27
那么它是哪一个:404或500?这真的不是同一件事......添加一个断点并看到被击中的动作。之后只需调试你的'OtakimMembershipProvider'。 – 2014-08-29 19:08:33