我已经阅读了这里的每一篇文章,却没有找到解决问题的答案。
我在此控制器中有一个动作:
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")',
恢复原状-编辑
OK,在调试模式下挖掘后,我发现了问题。
错误为:“无效的JSON原语:i_username。”
并基于Ajax处理中的这篇文章“无效的JSON原语”
我将代码更改为此:
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);
}
});
你应该json stringify
,如果你使用的contentType =应用程序/ JSON数据。
尝试以下代码:
变体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' },
// ...
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句