2013-02-08 2 views
0

HTML 및 javascript 웹 페이지로 Restful WS를 호출 할 때 문제가 있습니다.jquery를 사용하여 Rest WS를 호출했지만 결과가 없습니다.

$.ajax({ 
       type: "GET", 
       dataType: "script", 
       crossDomain: true, 
       url: "http://localhost:8013/publicationservice/lista",    
       complete: function (xhr) { 
        console.log(xhr); 
        console.log("======"); 

       }, 
      }); 

이 내가 서비스를 호출하는 방법입니다

내 코드입니다. readyState : 4, responseCode : 200 및 message : "success"를 리턴합니다. 그러나 Rest WS의 메서드는 문자열을 반환합니다. 문제는 "xhr"을 인쇄 할 때 객체 데이터를 얻는 것입니다. 하지만 responseText 속성을 인쇄 할 때 정의되지 않았다. 하지만 크롬 콘솔과 파이어 폭스 파이어 버그 모두에서 디버깅을하는 동안 "네트워크"탭에서 JSONP로 작업하는 JSON 일 가능성이있는 String으로 결과를 볼 수 있습니다. 왜 dataType json 또는 jsonp를 사용하지 않는지 왜냐하면 그것은 나에게 오류를 제공하기 때문에, 그것은 잘 데이터 타입을 스크립트로 설정하면 작동합니다). 하지만 이것이 주된 문제입니다. 응용 프로그램을 끝내기 위해 필요한 String의 가치를 얻을 수 없습니다. $ ajax 호출에 가능한 모든 매개 변수를 시도했지만 성공하지 못했습니다. 아무도 나를 도울 수 없다면, 나는 정말로 감사 할 것입니다. 미리 감사드립니다.

+0

'완료'대신 '성공'을 시도하십시오. – dfsq

+0

나는 이미 성공했는데, 내 xhr은 "undefined"를 반환하고 객체를 반환하지도 않는다. 어쨌든 고마워. –

답변

0

동일한 출처 보안 정책을 실행 중입니다. 동일한 호스트 또는 다른 호스트에서 웹 서비스를로드하는지 여부에 관계없이 스크립트가로드되지만 다른 데이터 유형은 제한됩니다. 그것에 대해 더 읽기 : 당신이 json 데이터 형식, 또는 text를 사용하여 데이터를 검색 할 수 있도록이 CORS 헤더를 추가하는 것입니다 해결하기 Same origin policyCross-origin Resource Sharing

한 가지 방법.

Access-Control-Allow-Origin: http://www.example.com 

현대 브라우저는 웹 서비스 상호 기원에 액세스 할 수 있도록합니다

스크립트가 http://www.example.com에서 실행 가정하면, 다음 반환 헤더를 localhost:8013 서버의 웹 서비스가있다. 구형 브라우저는 이것을 구현하지 않으므로 그것에 의존해서는 안됩니다.

내가만큼 당신이 웹 서비스의 출력 변경 액세스 권한을 갖는 경우, 아래의 대안을 권 해드립니다

:

또 다른 방법은 제한이 을 반환하는 웹 서비스를 변경하는 것입니다 동일 출처를 극복하는 것입니다 적절한 JSONP는 웹 서비스 응답에 변수 할당 또는 함수 호출을 포함하는 것을 의미합니다.

window.var1 = { "status": "Green", "options": { "alpha": true, "bravo": null } } 

나 : 당신이 중 하나를 보내 줄,의는 웹 서비스가 { "status": "Green", "options": { "alpha": true, "bravo": null } }를 반환하는 것을 의미 가정 해 봅시다 후자의 경우

callbackFunction({ "status": "Green", "options": { "alpha": true, "bravo": null } } ) 

을, 당신은 이전을 실행하기 callbackFunction()을 정의해야합니다 $.ajax 명령 전자의 경우 전역 네임 스페이스를 오염시키는 변수로 끝나게됩니다.

+0

빠른 응답을 보내 주셔서 감사합니다. 나는 당신이 말하는 것을 잘 이해하지 못합니다. callbackFunction을 시도했지만 어느 것도 작동하지 않았습니다. :(나는이 기술에 대해 매우 새로운 기술이다.) –

+0

REST WS는 다음과 같은 형식으로 데이터를 리턴한다.'callbackFunction ({ "status": "Green", "options": { "alpha": true, "bravo" null)})'$ .ajax 호출 위에 함수를 작성하십시오. 'window.callbackFunction = function (data) {console.log (data);}' –

+0

응답에 감사드립니다. 자바 스크립트 및 jquery 들어있는 HTML을 수정하십시오. 나머지는 수정할 수 없습니다. 내가 필요한 물어 봤는데, 편안한 ws json 형식으로 문자열을 반환해야합니다 .Json 예전에는 다음과 같은 내용이었습니다 : var script = document.create ('script'); script.src = "http://server.com/listOfData.js" document.body.appendChild (script); 문자열을 반환하는 편안한 ws로 변경해야합니다. 내 HTML에 nly. 감사합니다 –

0

dataType ~ 스크립트를으로 설정하면 jquery가 사용자의 경우 올바르지 않은 javascript 응용 프로그램 코드로 응답을 실행하도록 지시합니다.

데이터 유형을 json으로 설정할 때 오류가 발생하는 경우 이는 응답이 json 유효성 검사에 실패했기 때문일 수 있습니다. 일부 validators 예를 들어, 자신의 엄격에 따라 다릅니다 :

이 코드는 일부 파서에서 JSON 검증 실패 대신

{ 
    key : "value" 
} 

를, 당신은 다음과 같이 따옴표로 키와 값을 모두 포장이 :

{ 
    "key" : "value" 
} 
+0

빠른 답변 주셔서 감사합니다. 문제는 이미 두 가지 형식으로 시도해 본 것입니다. 둘 다 똑같은 결과를 얻고 있습니다. jquery에는 $ jsonp 함수가 있다고 들었습니다. 그러나 나는 정보를 얻고 있으며 아직 아무것도 찾지 못했습니다. 나머지 ws를 호출하는 다른 방법이 있습니까? –

관련 문제