首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发送Ajax请求时获得500错误

问发送Ajax请求时获得500错误
EN

Stack Overflow用户
提问于 2014-08-29 19:03:53
回答 1查看 1.8K关注 0票数 2

我看过这里的每一篇文章,都没有找到解决问题的办法。

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

代码语言:javascript
复制
public class AccountController : Controller
{
    [HttpPost]
    public JsonResult CheckUsername(string i_username)
    {
        var MembershipProvider = new OtakimMembershipProvider();

        return Json(MembershipProvider.CheckUsername(i_username));
    }
}

这是View中的代码

代码语言:javascript
复制
$.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 () {

    }
});

现在我一直收到这个错误:

代码语言:javascript
复制
POST http://localhost:61035/Account/CheckUsername 500 (Internal Server Error) 

根据这里的帖子,我使用它生成URL:

代码语言:javascript
复制
url: '@Url.Action("CheckUsername", "Account")', 

还原-编辑

好的,在深入调试模式之后,我发现了这个问题。

错误是:“无效的JSON原语:i_username。”

基于这篇文章"Invalid JSON primitive" in Ajax processing

我把我的代码改为:

代码语言:javascript
复制
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);
                }
            });
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-29 19:46:03

如果使用json stringify = application/json,则应该对数据进行contentType。

尝试使用以下代码:

变式1:

代码语言:javascript
复制
$.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:

代码语言:javascript
复制
$.ajax({
    type: "POST",
    url: '@Url.Action("CheckUsername", "Account")',
    contentType: "application/x-www-form-urlencoded; charset=UTF-8",
    data: { 'i_username': 'silagy' },
    // ... 
});
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25574680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档