2010-11-22 10 views
0

웹 서버에서 일부 JSON을 반환하지만 키를 참조 할 수 없습니다. alert(response);을하지만 개별적으로 키를 참조 할 때문에 그 좋은 없습니다 :JSON을 반환 할 때 키를 참조 할 수 없습니다.

{"voteid":110.0,"message":"Your request was processed.","success":true} 

경고 response.message/voteid 경고 undefined 전체 문자열을 경고

alert(response.voteid); 

잘 작동합니다. 내 최종 목표는 JSON에서 voteid 키를 얻기도 작동하지 않습니다 앵커,에 추가하는 것입니다 - 전체 문자열 또는 단지 키 :

success: function(response) { $(".fav").data("voteid", response.voteid) } 
<a class="fav" data-voteid=""> 

보조 노트에, 나는 '돈 투표자 말기에 0이 왜 있는지 알아. 숫자를 문자열로 반환합니다!

EDIT : 그러나 dataType을 JSON으로 설정하면 데이터가 anchor의 data-voteid 속성에 추가되지 않습니다.

EDIT .data 대신 .attr을 사용하여 ID를 추가했습니다. 많은 분들께 감사드립니다.

+0

이렇게 말하면 "id"라는 부동 소수점 필드를 갖는 것이 잘못되었습니다. – cHao

+0

cHao, 왜 그런 일이 일어나는 지 모르겠습니다. 나는 문자열을 반환합니다. 나는 이것이 어디에서 왔는지 모른다. – Mohamad

+0

@cHao : 자바 스크립트에 정수가 없습니다. JSON도 마찬가지입니다. 하지만 '110.0'은 이상한 선택이다. :) –

답변

2

코드의 일부 핵심 부분을 제외했지만 사용자의 요청에 따라 dataType:'json'을 설정하지 않은 것 같습니다.

또는 수동 $.parseJSON를 호출 할 수 있습니다

success: function(response) { 
    var parsed = $.parseJSON(response); 
    $("fav").data("voteid", parsed.voteid); 
} 

이 기억은, JSON 텍스트입니다.

+0

'script'가 'json'으로 바뀌어 duhh ....하지만 여전히 앵커의 데이터에 voteid = ""추가되지 않습니다! – Mohamad

+1

@mel, @patrick dw :'dataType'을 완전히 끄고 서버가 올바른 내용 유형을 반환하게하는 것이 더 좋습니다. –

1

JSON을 객체로 되돌리려면 JSON을 문자열로 되돌릴 수 있습니다. 다음을 시도하십시오.

var responseObject = eval (response);

경고 (responseObject.voteId) 다음

및 평가가 좋은 생각과 어떻게 해결하는 방법이 아닌 이유에 대해 구글.

+0

'구문 분석'JSON을 포함하여'eval'을 거의 사용하지 않아야합니다. 그것은 쉽지만 매우 위험합니다. – Phrogz

+0

'json'대신 'script'가 있었는데 :/-하지만 값은 acnhor의 데이터 - 투표자 속성에 추가되지 않습니다! – Mohamad

1

아약스 호출에서 json으로 데이터 유형을 지정하고 있습니까? 아마도 JSON을 키에 액세스 할 수없는 문자열로 반환합니다. JSON을 지정하면 jquery가 문자열을 객체로 변환합니다.

+0

아니요, 이제 작동합니다! '스크립트'에 관한 이야기 – Mohamad

관련 문제