2013-05-09 3 views
0

사이트에 대한 ajax 요청에 문제가 있습니다.jQuery ajax 호출의 'contents'필드를 사용하여 응답을 처리하는 방법

응답으로 json 개체를 반환하고 나는 정상적으로 함수 (데이터)를 성공으로 처리 할 수 ​​없습니다. 나는 크롬

Uncaught SyntaxError: Unexpected token :

오류 및

SyntaxError: invalid label {"response":{

파이어 폭스 ...

응답입니다 : 내가 생각

{"response":{ 
    "header": { 
    "found": 6, 
    "query": "something" 
    }, 
    "results": [ 
    { ... } 
    ] 
} 

~을 사용하여 내용 ajax() 함수의 필드는 어떻게 든 응답을 래핑하지만 사용 방법을 보여줄 예는 없습니다. 요청을 처리 할 다른 아이디어가 있습니까?

내가 만드는 호출입니다 : JQuery와 웹 사이트에서

$.ajax({ 
    url:'http://somesite.com/search/query', 
    dataType: 'jsonp', 
    data: { q: 'something' }, 
    success:function(json){ 
     // debugger; 
     alert("Success"); 
    }, 
    error:function(err, data){ 
     alert("Error"); 
    }, 
}); 

http://api.jquery.com/jQuery.ajax/

내용 유형 : PlainObject 어떻게 jQuery를 것 결정 문자열/정규 표현 쌍의 객체 컨텐츠 타입이 주어지면 응답을 파싱합니다. (버전 추가 : 1.5)

답변

0

오류가 발생하는 이유는 올바른 JSONP가 아니고 일반 JSON에 콜백이 없어서 서버 측에서 콘텐츠를 가져 오는 것 외에 할 수있는 일이 아무것도 없기 때문입니다 CORS가 사용 설정되어 있지 않으면 JSONP가 도메인 간 요청에 대해 지원되는 유일한 데이터 유형이므로 외부 서비스에서 API를 변경해야합니다.

+0

하지만. 이 응답 객체를 '캡처'할 수있는 다른 방법은 없습니까? 어쩌면이 응답을 포착 할 수있는 '리스너'를 설치하는 방법이 있을까요? – AntouanK

+0

아니, 당신이 콘솔에서 볼 수있는 경우에도 데이터를 얻을 수있는 방법이 없습니다. 유효한 JSONP가 아닌 경우 작동하지 않으며 상호 도메인 인 경우 데이터 유형을 변경할 수 없습니다. 모든 서비스가 JSONP를 지원하지는 않습니다. API에 대한 설명서를 읽어야하며 JSON 만 지원하는 경우 서버에서 데이터를 가져와 자신의 서버에 ajax 호출을 사용하여 데이터를 가져와야합니다 , 또는 성능에 치중 할 의사가 있다면 YQL과 같은 서비스를 사용할 수 있습니다. – adeneo

+0

지금은 개인 프로젝트 일 뿐이므로 YQL을 사용해 볼 수 있습니다. 감사합니다 – AntouanK

관련 문제