2014-08-29 2 views
2

모든 게시물을 읽었으며 해결 방법을 찾지 못했습니다. 에 따르면Ajax 요청을 보낼 때 500 오류 발생

POST http://localhost:61035/Account/CheckUsername 500 (Internal Server Error) 

:

$.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() { 

    } 
}); 

지금 나는이 오류가 계속 :이 View의 코드가

public class AccountController : Controller 
{ 
    [HttpPost] 
    public JsonResult CheckUsername(string i_username) 
    { 
     var MembershipProvider = new OtakimMembershipProvider(); 

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

입니다 :

나는이 컨트롤러에서 작업을해야 여기에 게시물을 작성하면 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); 
       } 
      }); 
+2

아니 내가 왜 내가 정적 추가해야하지 않았다 컨트롤러가 정적 클래스가 아닙니다. – Silagy

+1

404 오류가 아닌 500 오류가 발생했습니다. 수신중인 오류 메시지는 무엇입니까? – rossisdead

+1

그럼 어느 것이니 : 404 또는 500? 정말 똑같은 것은 아닙니다 ... 중단 점을 추가하고 타격을받는 동작을 확인하십시오. 그 후에'OtakimMembershipProvider'를 디버그하십시오. –

답변

3

당신의 contentType = 응용 프로그램/JSON을 사용하는 경우 당신은 당신의 데이터를 json stringify한다. 다음 코드

시도 :

변형 1 : application/x-www-form-urlencoded; charset=UTF-8-

$.ajax({ 
    type: "POST", 
    url: '@Url.Action("CheckUsername", "Account")', 
    contentType: "application/json; charset=utf-8", 
    data: JSON.stringify({ 'i_username': 'silagy' }), 
    // ... 
}); 

또는 변화의 contentType. (실제로이 문제를 해결할 것입니다, 그래서 그냥 응용 프로그램/JSON을 제거 jQuery를 아약스의 contentType에 대한 기본 옵션입니다)

변형 2 :

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