2013-02-08 1 views
0

나는 $.getJSON 함수의 응답이 이해가 안가는 JQuery/JSON 문제에서 내 머리카락을 꺼냈다.

{"sid":"12", "name":"somename", "email":"someemail"} 

전체 응답 :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head><title>Untitled Document</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
</head> 
<body> {"sid":"12", "name":"somename", "email":"someemail"} 
</body> 
</html> 

나는를 실행하면 PHP 함수에 의해 반환

var jqxhr = $.getJSON("myPHPFunction.php", function() { 
     alert("success"); 
    }) 
    .success(function() { alert("second success"); }) 
    .error(function() { alert("error"); }) 
    .complete(function() { alert("complete"); }); 

json으로는 이것이다 : 그래서 여기

내 자바 스크립트 코드를 발췌 한 것입니다 스크립트를 실행하면 error이라는 대화 상자가 나타납니다.

여러 온라인 유효성 검사기가 JSON을 구문에 맞게 수정했다고보고했습니다. 그러면 JQuery가 실패하는 이유는 무엇입니까? php와 스크립트는 모두 같은 폴더 (서버)와 동일한 도메인에 있습니다.

+3

오류 함수에 어떤 인수가 적용됩니까? –

+0

어떻게 확인하나요? –

+2

'console.log (arguments)'가 가장 쉬운 방법입니다. –

답변

1

귀하의 응답에는 HTML이 포함되어서는 안됩니다! 위의 코드는 작동합니다

header("Content-Type: application/json"); 
echo('{"sid":"12", "name":"somename", "email":"someemail"}'); 
exit(); 

:

는 Propberbly 당신은 또한 올바른 콘텐츠 형식을 설정해야합니다.

헤더 행 앞에 다른 코드를 출력하면 안됩니다.

+0

대부분의 경우이 작업이 필요하지 않습니다. –

+0

기본 내용 유형은 propberbly text/html입니다. jQuery가이를 허용한다는 점만 제외하면 do not do not. – rekire

+1

그것을 수락합니다. 어쨌든 모든 json은 실제로 텍스트입니다. –

3

주석에서 JSON을 HTML 마크 업으로 캡슐화 할 수 없습니다. 반환 된 데이터 ("소스보기"가이를 확인하기위한 좋은 도구 임)가 순수한 JSON인지 확인해야합니다.

관련 문제