2012-03-06 3 views
0

여기 내 코드에 결함이 있으며 약간 혼란 스럽습니다.jQuery ajax에서 서버 측의 응답 처리

$.ajax({ 
     type: 'POST', 
     url: '/contact/index/add/', 
     data: $("#addContact").serialize(), 
     success: function(data, status, xhttp) { 
      var response = eval ("[" + data + "]"); 
      console.log(response.msg); 
      if (response.success){ 
       console.log(response.msg); 
      } else { 
       console.log(response.msg); 
      } 
     }, 
     dataType: "html" 
    }); 

는 내가 찾던 그러나 나는 CONSOLE.LOG (response.msg) 라인에 '정의되지 않은'지고 있어요 (JSON 형식으로 인코딩) 배열에 액세스 할 수 있도록 응답에

I는 (응답) CONSOLE.LOG 경우

그것이 같은 (방화에) 보여

요청 [{성공 = TRUE, MSG = "테스트"} 개체]

위로 보내는 다음과 같은 트링 :

{ "성공"사실, "MSG": "테스트"} 나는 평가를위한 []에서 응답을 둘러싸 이유입니다.

그래서 혼란 스러울 정도입니다. 어떻게 배열의 속성에 액세스 할 수 있습니까?

I는 (PHP/젠드 프레임 워크)이

서버 측

에코 Zend_Json_Encoder :: 인코딩 (배열 ('성공'=> 참 'MSG'=> '검사')); 출구;

내가

if(response.success) { // do something } 

내가 서버 측 또는 자바 스크립트 쪽을 수정해야하나요 라인에서 같은 배열의 키/값에 액세스하려면 어떻게해야합니까?

+0

- 업데이트 - 우선, 내 [] 문제를 수정 한 HTML이 아닌 json으로 dataType을 수정했습니다. –

+0

- 두 번째 업데이트 -이 질문을 무시하십시오. 전체 문제였습니다. 올바른 데이터 유형을 설정해야했습니다. –

답변

1

오른쪽을 지정해야합니다. dataType. 당신은 반환 데이터 형식으로 JSON을 지정해야합니다 : 일반 사람에 대괄호를 전환

dataType: 'json' 
+0

그래, 질문을 삭제하는 방법이 있었으면 좋겠다. 내가 실수를 저질렀다. 고맙습니다. –

1
dataType: "json" 

되고 평가를 사용하지 않는 json을 파싱합니다. jQuery.parseJSON

+0

잘 알고 있습니다, 고마워요 ... 아직 배우고 있습니다 :) 평가서에 대한 우려가있었습니다. –