发送Ajax请求时出现500错误

时间:2014-08-29 19:03:53

标签: jquery ajax asp.net-mvc

我在这里阅读过有关它的所有帖子,并没有找到解决问题的答案。

我在这个控制器中有一个动作:

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);
                }
            });

1 个答案:

答案 0 :(得分:3)

如果您使用contentType = application / 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的默认选项,所以只需删除application / json即可解决问题)

变体2:

$.ajax({
    type: "POST",
    url: '@Url.Action("CheckUsername", "Account")',
    contentType: "application/x-www-form-urlencoded; charset=UTF-8",
    data: { 'i_username': 'silagy' },
    // ... 
});