2010-02-15 6 views
4

를 호출하지 나는 다음과 같은 자바 스크립트 코드가 있습니다jQuery를해서 getJSON 콜백

$.get("categories/json_get_cities/" + stateId, function(result) 
     {    
      //code here 
     }, 'json' 
    ); 

그리고 그것은 기본적으로이 같은 출력 처리하는 PHP 코드 : 나는 것을 볼 수있는 불을 지르고 콘솔에서

function json_get_cities($stateId) 
{ 
    //code here 
    echo json_encode(array('cities'=>$cities)); 
} 

을 ajax 요청이 예상대로 수행되고 200 OK 응답이 수신되고 도시가 포함 된 JSON 객체가 반환됩니다. 그러나 어떤 이유에서 jquery에 전달할 콜백 함수가 호출되지 않습니다.

심지어
$.get("categories/json_get_cities/" + stateId, function(result) 
     {    
      debugger; 
      //code here 
     }, 'json' 
    ); 

이 작동하지 않는 즉, 함수의 상단에 debugger 전화에 넣어. 그러나 'json'의 세 번째 인수를 제거하면 함수가 호출됩니다 (그러나 응답 텍스트는 JSON 객체가 아닌 일반 텍스트로 처리됩니다).

{"cities":[{"id":"1613","stateId":"5","name":"Acton"}]} 

어떤 생각 :

다음은 서버에 의해 반환 된 JSON 응답입니까?

+0

젠장. 최신 Chrome에서와 동일한 문제가 발생합니다. Edge가 좋으며 JSON이 유효합니다. – MSC

답변

10

이것이 유효한 JSON입니까? jQuery 1.4에서는 JSON 구문 분석이 엄격한 방식으로 수행되고 잘못된 JSON은 거부되고 parsererror가 발생합니다.

디버그 할 콜백에서 console.log(arguments)을 시도하십시오.

또한 'json'이 네 번째 인수이지만 그 값은 세 번째 인수 여야한다고 명시했습니다 (예에서와 같이).

JSON Validator

+0

이상하게도 console.log에 넣을 때 캐시가 작동 했어야합니다. –

7

json으로 이것을 사용 유효 확인은 ...보다는 방법의 유형으로 GET를 전달 아약스 방법을 사용하는 것입니다 .get 메소드. 이렇게하면 성공 메소드 외에도 오류 콜백 함수를 지정할 수 있습니다.

+0

link.it에서 내 문제를 해결해 주셔서 감사합니다. – devtut

3

또 다른 방법이 아약스 몇 가지 문제를 디버깅하는

1

JSON 필드 이름은 jquery를로드 할 파일에 json을 작성할 때 값과 같은 따옴표로 묶어야합니다. 예 : 코드에서

: JSON 파일에서

{ 
    name: "value" 
} 

:

{ 
    "name": "value" 
}