2011-10-28 9 views
4

complete() 콜백 함수에 전달 된 데이터 객체가 json 객체가 아닌 [Object 목적]. data.responseText에서 json 응답 문자열을 볼 수 있습니다. 여기json url에 대한 jQuery.ajax()가 json 객체 대신 문자열을 반환합니다.

내 jQuery를 아약스 요청입니다 :

$.ajax({ 
    url: 'api.php', 
    dataType: 'json', 
    data: { 
    command: "GetBlacklist" 
    }, 
    type: 'POST', 
    error: function(jqXHR, textStatus, errorThrown) 
    { 
    messageDiv.append("Error: " + errorThrown + "<br />"); 
    }, 
    complete: function(json) 
    { 
    $('.blacklist textarea').text(json.message); 
    messageDiv.append("Blacklist loaded."); 
    } 
}); 

그리고 여기에 전송되는 반응이다 :

{"message":"success","result":0} 

그것은 유효한 JSON으로 평가하고, 나는 올바른 JSON 컨텐츠를 보낸다 형식 헤더를 서버에서 가져옵니다. 이 하나에 난처한!

+0

JSON은 JavaScript Object Notation ... JSON 개체는 문자열이 평가되면 자바 스크립트 개체입니다. – Clive

+0

오른쪽 ... 'dataType'을 지정하면 응답을 자동으로 평가해야합니다. 맞습니까? 그렇지 않으면 dataType을 지정하는 지점이 전혀 표시되지 않습니다. 나는 내가 받고있는 data.responseText를 평가할 수 있다고 생각했지만 데이터 객체는 서버 응답을 나타내는 json 객체 여야한다는 인상하에있었습니다. –

+0

서버에서 Ajax 호출에 대한 응답으로 무엇을 얻고 있는지 확인하려면 double serialize –

답변

3

complete 콜백의 서명은 complete(jqXHR, textStatus)이고, jqXHR은 [Object object]입니다.

대신에 success(data, textStatus, jqXHR) 콜백을 사용해야합니다. 요청이 성공하면 호출되며, 이번에는 data이 올바른 일을합니다.

자세한 내용은 the manual을 확인하십시오.

+0

그럴 수도 있습니다. 감사! –

+1

[성공] 약점이있는 것으로 보입니다. .done을 사용해야하지만 문제가 해결되지 않습니다. –