我看过这里的每一篇文章,都没有找到解决问题的办法。
我在这个控制器中有一个动作:
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: '@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);
}
});发布于 2014-08-29 19:46:03
如果使用json stringify = application/json,则应该对数据进行contentType。
尝试使用以下代码:
变式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的默认选项,所以只需删除application/json就可以解决问题)
变式2:
$.ajax({
type: "POST",
url: '@Url.Action("CheckUsername", "Account")',
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
data: { 'i_username': 'silagy' },
// ...
});https://stackoverflow.com/questions/25574680
复制相似问题