2010-07-13 5 views
1
 $.ajax({ 
    beforeSend: function(xhr) { 
xhr.setRequestHeader('Authorization', "Basic YWRtaW46YWRtaW4=");   
}, 
    url: "https://test.com/incident.do?JSON&callback=?&sysparm_action=getRecords", 
    dataType: "json", 
    contentType: "application/json", 
    method: 'GET', 
    success: function(a,b,c) { 
    alert(a); 
     }   
}); 

을 제기 ... 방화범 내가이 JSON 응답 (I이 유효 알고있는) 명확성을 위해립니다]를 얻을 수 있음을 보여줍니다JSON 응답이 "잘못된 라벨"나는 버튼을 누를 때이 함수를 호출

{ 
    "records": [ 
     { 
      "service_offering": "", 
      "number": "INC0000009" 
     }, 
     { 
      "service_offering": "", 
      "number": "INC0000010" 
     } 
] 
} 

방화범은 "잘못된 라벨 오류를 보여줍니다 https://test.com/incident.do?JSON&callback=jsonp1279049933243&sysparm_action=getRecords 1 호선

나는이 문제를 해결할 수있는 방법? 감사합니다!

+0

동일한 도메인에 대한 요청입니까? 귀하의 답변은 ** JSONP ** 응답이 아닌 JSON 응답입니다. 도메인에서 JSONP를 지원합니까? –

+0

이것을 확인하십시오 http://saffronsierra.com/2009/09/14/rest-jquery-jsonp-grails/ – jmozko

답변

2

귀하의 답변은 유효한 JSON이지만 jQuery가 찾는 것은 아닙니다. 당신이 URL에 &callback=?를 지정하면, jQuery를 당신의 응답이 해야한다, 다른 보이는 JSONP 응답을 기대하고 당신이 callback=? jQuery를 당신의 success 기능의 이름을 생성하는 것이다 지정하는 경우에, 어떻게됩니까

jsonp1279049933243({ 
    "records": [ 
    { 
     "service_offering": "", 
     "number": "INC0000009" 
    }, 
    { 
     "service_offering": "", 
     "number": "INC0000010" 
    } 
    ] 
}); 

이 경우 jsonp1279049933243은 JSONP 그냥 페이지에 <script> 태그를 생성하여 작동하므로 해당 URL을 가져 오는 경우, 그것은 정말 대신이의, 자바 스크립트 파일을 포함하는 함수를 실행의 :

<script type="text/javascript"> 
    jsonp1279049933243({ "records": [....] }); 
</script> 

뭐 효과적으로 일어나고 있습니다 :

<script type="text/javascript"> 
    { "records": [....] } 
</script> 

... 유효한 JavaScript가 아닙니다. 이제는 src=https://test.com/incident.do?JSON&callback=jsonp1279049933243&sysparm_action=getRecords을 통해로드되지만 잘못된 구문/레이블 오류는 같습니다.

+0

콜백을 포함한 이유는 무엇입니까? =? 그것 없이는 200 OK를 사용하여 널 응답을 얻고있다. – imagineblue

+0

@bluemango - 맞다. 원격 도메인에서 JSONP를 사용해야하고, '

2

서비스가 jsonp를 지원하는지 확인할 수 있습니다. 그렇지 않으면 서버 측 프록시를 설정해야합니다.

Using jQuery to get json data returns invalid label error

+0

서버가 지원하는지 어떻게 확인할 수 있습니까? 동일한 도메인에서 스크립트를 실행하면 이러한 문제를 피할 수 있습니까? – imagineblue

+0

jsonp를 지원하려면 json 함수를 자바 스크립트 함수로 래핑해야합니다. – redsquare

+0

좋은 전화 Brendan, 그게 바로 그 문제 일 것입니다. – tbranyen

0

당신은 당신이 그것의 유효를 알고 있다고 말한다. 당신은 parseJSON 함수로 그것을 퍼널 할 수 있고 당신은 그걸로 운이 있는지 알아 보겠나요?

$ .parseJSON (str_json);

참고 : 사용중인 jQuery 버전을 언급하지 않았습니다. 이 메소드는 jQuery 1.4.1 이상에서만 사용할 수 있습니다.

+0

문제는 성공 함수가 호출되지 않기 때문에 결과로 작업 할 수 없다는 것입니다 ... JSON을 확인하여 여기를 확인했습니다. http://www.jsonlint.com/ – imagineblue

+0

도와 드리겠습니다. JSON 문자열을 잡고 jQuery와 함께 인터프리터를 사용하여 테스트한다. Firebug는 훌륭한 콘솔 디버거입니다. jQuery.parseJSON (your_string); jQuery는 json lint와 통신하여 유효한 JSON을 승인하지 않으므로 그다지 관련성이 없습니다. – tbranyen

0

json이 유효합니까? 확인하려면 JSONLint으로 확인하십시오.

+0

JSONLint는 JSON이 유효 함을 확인합니다. 주변을 둘러 보았고 일부 사람들은 데이터 주변에 여분의 괄호 세트를 추가하여이 문제를 해결했지만 문제는 결과로 작업 할 수 없다는 것입니다. – imagineblue

0

데이터를 일반 텍스트로 가져 와서 클라이언트 측의 json으로 변환 해보십시오. 나는 이것을 수행하기 위해 "http://www.json.org/json2.js"스크립트를 사용한다. 그것은 내 응용 프로그램에서 "잘못된 레이블"문제를 해결하는 데 도움이되었습니다. (평가() 함수는 도움이되지 않았기 때문에 나는 스크립트를 언급, 아무 생각없는 이유 ...)

행운을 빕니다 :)

0

는 1.5.2 (그리고 아마도 이전 버전)를 사용하는 경우, 당신이 할 수있는 필요하지 않거나 원할 경우 jsonp를 비활성화하십시오.그래서 모든 아약스 통화

이 페이지에이 곳을 추가

$.ajaxSetup({ 
    jsonp: null, 
    jsonpCallback: null 
}); 

또는 하나의 호출이 추가 :

jsonp: null, 
jsonpCallback: null, 

를 따라서 당신의 예제 :

$.ajax({ 
    beforeSend: function(xhr) { 
     xhr.setRequestHeader('Authorization', "Basic YWRtaW46YWRtaW4=");   
    }, 
    url: "https://test.com/incident.do?JSON&callback=?&sysparm_action=getRecords", 
    dataType: "json", 
    contentType: "application/json", 
    method: 'GET', 
    jsonp: null, 
    jsonpCallback: null, 
    success: function(a,b,c) { 
     alert(a); 
    }   
}); 
관련 문제