发送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); 
       } 
      }); 
+2

不,我没有,但我为什么要添加静态的,控制器不是静态类 – Silagy 2014-08-29 19:06:38

+1

您遇到500错误,而不是404错误消息。您收到的错误消息是什么? – rossisdead 2014-08-29 19:08:27

+1

那么它是哪一个:404或500?这真的不是同一件事......添加一个断点并看到被击中的动作。之后只需调试你的'OtakimMembershipProvider'。 – 2014-08-29 19:08:33

如果您使用的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' }, 
    // ... 
});