2014-10-24 1 views
0

나는 text/html을 응답 받기 위해 상호 도메인 요청을해야하는 코드가 있습니다. JSONP 메서드를 사용하고 다른 프로그램에서 결과를 얻고있었습니다 (json). 내가 프로그램을 실행하면, 콘솔은이 문제의 원인이되는 콜백 매개 변수 후 추가 매개 변수 값을 추가했습니다 볼 수 있듯이Cross Domain Ajax (JSONP) 콜백 문제

Uncaught SyntaxError: Unexpected token < 
?callback=jQuery17207555819984991103_1414157672145&_=1414157675836" 

을 오류를보고합니다. 네트워크 탭에서 응답을 볼 때, 꽤 좋았고 정확히 내가 원했던 것입니다. 나는 4 개의 교차 도메인 링크에서 그것을 테스트했고 그 여분의 매개 변수가 그들 모두에게 다가왔다. 다음 내 코드입니다 :

$.ajax({ 
       type: 'get', 
       url: link, 
       dataType: 'jsonp', 
       success: function(dataWeGotViaJsonp){ 
        alert(dataWeGotViaJsonp) 
        var len = dataWeGotViaJsonp.length; 
       } 
      }); 

나는 그것을 통과 한 링크는 :

http://stackoverflow.com/questions/20944962/data-grid-view-update-edit-and-delete-in-vb-net-windows-form-that-using-multipl 
http://www.espncricinfo.com/pakistan-v-australia-2014/engine/match/727927.html 
http://pucit.edu.pk/ 

응답이 좋지만 때문에 그 오류로 성공 콜백이 호출되지 않습니다. 어떤 해결책?

+3

응답과 같은 소리가 유효한 JSONP가 아닙니다. JSONP는 스크립트 요소를 동적으로 포함하는 것입니다. 나는. 응답은 유효한 JavaScript 여야합니다. HTML이 유효한 JS가 아닙니다. 당신이하려는 것은 단순히 불가능합니다. –

+2

당신은 단지'jsonp'를 사용하기위한 어떤 URL도 건네 줄 수 없으며, 대상 자원은'jsonp'을 지원해야합니다. 그렇지 않으면 아무 쓸모가 없습니다. 위에 게시 한 링크는 jsonp를 지원하지 않습니다 .... 그들은 사용 된'dataType'과 관계없이 html 콘텐츠를 반환합니다 ... 해당 오류가 발생합니다 –

+0

JSONP는 기본적으로 함수가 포함 된 페이지에 삽입 된 스크립트입니다 인수가 객체 인 수신 콜백 함수를 호출하십시오. 해당 형식을 따라야하거나 JSONP이 아닐 수도 있습니다. – Joseph

답변

2

"잡히지 않은 SyntaxError : 예기치 않은 토큰 <"은 반환 된 데이터가 HTML 마크 업 일 가능성이 있으며 적절한 JSONP가 아님을 나타냅니다. JSONP 웹 서비스에서 HTML을 반환하려면 적절한 프로 시저 호출 구문으로 HTML을 래핑하는 서버가 필요합니다. 예,

jQuery17207555819984991103_1414157672145 ("<div>... your HTML here ...</div>") 

가능성이 어딘가에서 인용 부호를 갖게됩니다 HTML, 당신은 탈출 URL 인코딩,에 UUEncode를, 또는 다른 적절한 자바 스크립트 문자열로 HTML 텍스트로 변환 한 다음 다시 변환해야합니다 때문에 클라이언트에서

"_ = 1414157675836"에 대해서는 응답이 캐시되지 않도록하기 위해 추가되었습니다. "_"매개 변수가 인식되지 않아 서버의 웹 서비스가 요청을 거부하지 않는 한 이것은 빨간색 청어입니다. 문제는 호스트에서 오는 잘못된 JSONP 구문입니다.