2011-03-09 5 views
1

현재 웹 서비스 용 웹 프론트 엔드를 개발 중입니다. jQuery 1.5.1을 JS-Framework 및 Firebug로 사용하여 디버깅 목적으로 사용하고 있습니다.웹 서비스에서 유효한 응답을받는 데 문제가 있습니다.

우선 Firefox 확장명 "REST Client"로 웹 서비스를 테스트했습니다. 이 는, 다음과 같은 요청이 성공 :

{"requestUrl":"http://localhost:8080/Foobar/rest/goods?label=Schro","requestMethod":"GET","requestBody":"","headers":["accept","application/json"]} 

지금, 나는이 jQuery를 UI 자동 완성의 맥락에서이 요청을 재현 할() 메소드 :

$("#autocompleteTest").autocomplete({ 
    source: function(request, response) { 
     $.ajax({ 
      url: "http://localhost:8080/Foobar/rest/goods/", 
      dataType: "json", 
      data: { 
       label: $("#autocompleteTest").val() 
      }, 
      headers: {'accept':'application/json'}, 
      error: function(jqXHR, textStatus, errorThrown) { 
       log(textStatus + "," + errorThrown); 
       log(jqXHR); 
      }, 
      success: function(data) { 
       console.log("bla:" + data); 
       response($.map(data, function(item) { 
        return { 
         label: item.label + " # " + item.id, 
         value: item.id 
        } 
       })); 
      }    
     }); 
    }, 
     // [...] 

는 내가 jQuery를에서이 조리법을했다 UI 자동 완성 demo

그러나 오류 이벤트가 발생합니다.

GET http://localhost:8080/Foobar/rest/goods/?label=Schrott - 200 OK 16ms 
Antwort-Header 
Server Foobar-Optimizer 
Content-Type application/json;charset=UTF-8 
Transfer-Encoding chunked 
Date Wed, 09 Mar 2011 10:50:03 GMT 
Anfrage-Header 
Host localhost:8080 
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0b12) Gecko/20100101 Firefox/4.0b12 
Accept application/json 
Accept-Language de-de,de;q=0.8,en-us;q=0.5,en;q=0.3 
Accept-Encoding gzip, deflate 
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Keep-Alive 115 
Connection keep-alive 
Origin null 

오류 jqXHR는 말한다 :

[Object { readyState=0, status=0, statusText="error"}] 

및 응답 헤더가 비어 있습니다 방화범 말한다.

두 가지 요청은 다른 결과를 제외하고는 내 눈을 똑같이 보입니다. 나는 어떤 제안든지 평가할 것입니다. 고맙습니다.

업데이트 : 솔루션

이 크로스 도메인 정책 문제입니다. 나는이 행동에 대해 몰랐다. 해결 방법은 $ .ajax 데이터 유형을 "json"에서 "jsonp"로 변경하는 것입니다. 이 정책을 재정의하고 원격 웹 서비스에 액세스하는 우아한 방법입니다.

물론 웹 서비스는이 json "패딩"을 처리 할 수 ​​있어야합니다.

다른 가능성의 무리가 여기에 언급되어 http://usejquery.com/posts/9/the-jquery-cross-domain-ajax-guide

+0

는 "제품"에서 후행 백 슬래시를 제거하려고 했습니까? –

+0

그래, 그 결과는 동일합니다 : "오류", 그리고 더 이상의 정보가 주어지지 않습니다. webservice 자체의 콘솔 로그는 꽤 잘 보입니다. 정확한 구현은 모르지만 요청한 객체를 보낸 것처럼 보입니다. – Weizen

답변

관련 문제