2010-05-12 5 views
2

다른 도메인에 jQuery $.getJSON 요청을 보내고 있습니다. 따라서 내 GET URI가 "콜백 ="으로 끝나는 지 확인하고 있습니다. (JSONP 사용)."유효하지 않은 레이블"jQuery와의 방화범이 끌린 오류 getJSON

NET의 Firebug 패널은 예상대로 데이터를 수신하고 있지만 어떤 이유로 콘솔 패널에 "invalid label"오류가 기록됩니다.

JSON은 JSONLint으로 유효성을 검사하므로 실제로 데이터 구조에 문제가 있는지 의심 스럽습니다.

이 오류가 발생하는 이유는 무엇입니까?

+0

JSONP 요청에 의해 렌더링 된 자바 스크립트를 표시하십시오. – SLaks

답변

3

서버 스크립트에서 JSONP를 잘못 사용하는 것 같습니다.

당신이 콜백 매개 변수를 사용하여 요청을 수신

, 당신은 다음과 같은 렌더링해야합니다 callbackName 콜백 매개 변수의 값입니다

callbackName({ "myName": "myValue"}); 

.

+0

jQuery 스펙은 "callback =?"을 허용합니다. jQuery.getJSON을 사용할 때. 콜백 함수에 응답을 래핑합니다. – jerome

+1

@jerome : 예, 서버 측 스크립트가이를 지원해야합니다. JSONP는 마법이 아닙니다. – SLaks

+0

감사합니다. 잠시라도 테스트 케이스를 보려면 아래 링크를 참조하십시오. 아직 도메인 간 요청으로 인해 데이터 사용을 허용하지 않는 이유를 알 수있는 정보가 충분하지 않습니다. http://www.thespacebetweenthewords.org/json_test/test_jsonp_request.html 다른 도메인에 대한 요청입니다. Firebug에서 "invalid label"콘솔 오류가 발생하여 데이터를 사용할 수 없습니다. http://www.globaloperative.info/json_test/test_json_request.html 요청은 동일한 도메인으로 이루어집니다.데이터가 검색되고 올바르게 평가됩니다. – jerome

11

이것은 이전 게시물이지만, 어쨌든 응답을 게시하도록하겠습니다 :

의 당신이 다음 파일에 의해 생성 된 JSON 코드를 얻으려면 가정하자, "get_json_code.php을"

<?php 
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5); 
echo json_encode($arr); 
?> 

언급 한 것처럼 $ .getJSON()은 "jsoncallback =?"을 추가 할 때 JSONP를 사용합니다. 매개 변수를 필수 URL의 문자열에 추가하십시오. 예를 들면 : "get_json_code.php"파일이 반환 된 JSON 문자열을 저장하기위한 유효한 참조 변수를 제공하지 않기 때문에

$.getJSON("http://mysite.com/get_json_code.php?jsoncallback=?", function(data){ 
    alert(data); 
}); 

그러나,이 경우, 당신은 방화범의 "잘못된 라벨"메시지가 표시됩니다.

<?php 
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5); 
echo $_GET['jsoncallback'].'('.json_encode($arr).')'; //assign resulting code to $_GET['jsoncallback]. 
?> 

이 방법, 결과 JSON 코드는 'jsoncallback'에 추가됩니다 변수를 GET :이 문제를 해결하려면 "get_json_code.php"파일에 다음 코드를 추가해야합니다.

결론적으로, "jsoncallback =?" 매개 변수는 $ .getJSON() URL의 두 가지 작업을 수행합니다. 1) JSON 대신 JSONP를 사용하도록 함수를 설정하고 2) "get_json_code.php"파일에서 검색된 JSON 코드를 보유 할 변수를 지정합니다. 이름이 같은지 확인하기 만하면됩니다.

도움이 되길 바랍니다.

Vq.

+1

이전이지만 유효한 대답에 대해 정말로 감사드립니다. 나는 그것들을 워드 프로세서에서 보지 못했다! –

관련 문제