2012-08-10 4 views
1

script.jsJQuery와 사용하여 JSON 개체를

$('#loginform').submit(function(e){ 
    $.ajax({ 
     type:"POST", 
     url:"/accounts/login/ajax/", 
     data:$('#loginform').serialize(), 
     success: function(msg){ 
      var msg = msg; 
      msg = JSON.parse(msg); 
      $('#messagestatus').html(''); 
      if(msg.username != null){ 
       $('#messagestatus').append(msg.username); 
      } 
      if(msg.password != null){ 
       $('#messagestatus').append(msg.password); 
      } 
     } 
    }); 
    e.preventDefault();    
}); 

반환 된 객체

{'username':['Required'],'password':['Required']} 

내가 때 내가 JSON.parse을 사용하고 내가 올바른 오류를 보여주는 것, 경고하고 있지만, messagestatus div에 추가하면 응답하지 않습니다. 도와주세요.

+3

무엇이'var msg = msg;'입니까? – Musa

+0

http://jsonlint.com/은'{ 'username': [ 'Required'], 'password': [ 'Required']}''JSON이 유효하지 않습니다. 'Parse error on line 1 : { 'username': [-----^Expecting 'STRING', '}''''을'''로 바꾸면 JSON이 유효합니다. 암호 및 사용자 이름 값을 배열로 가져 왔지만 – Nope

답변

2

사용자 이름과 암호가 json.Either의 배열이 JSON이

{'username':'Required','password':'Required'} 

같다고을하거나 스크립트 변경됩니다,하지 않을 수도 있습니다

if(msg.username.length > 0) 
    { 
     $('#messagestatus').text(msg.username[0]); 
    } 
    if(msg.password.length > 0) 
    { 
     $('#messagestatus').text(msg.password[0]); 
    } 
+0

사용자 이름이 존재하는지 여부는 어떻게 확인합니까? – Abhimanyu

+0

첫 번째 if 앞에 if (typeof msg.username! = 'undefined')'를 추가하고 'if typeof msg.password! = 'undefined')'두 번째 전에. – Vlad

1

가 중요 할 수 있음을하지만, json 객체는 실제로 하위 배열로 구성됩니다.

{'username':['Required'],'password':['Required']} 
      ^----------^   ^----------^ 

디코딩 된 데이터 구조 실제로 JS가 될 것입니다.

obj['username'][0] and  obj['password'][0] 
+1

또한 키 주위에'''대신'''이 있습니다. –

+0

msg [ 'username] [0], 작동하지 않습니다. – Abhimanyu

0

먼저 매개 변수를 함수에 다시 선언 할 필요가 없습니다. 다음

은 $ .parseJSON()를 사용하여 JSON을 구문 분석 :

msg = $.parseJSON(msg); 

귀하의 JSON 배열, 사용 MSG [ "이름"] [0] 첫 번째 문자열에 액세스 할 아닌 전체 배열이 포함되어 있습니다.

그리고 e.preventDefault(); AJAX 이전의 첫 번째 진술.

.html ('') => .empty()하지만 같은 결과입니다.