현재 웹 서비스 용 웹 프론트 엔드를 개발 중입니다. 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
는 "제품"에서 후행 백 슬래시를 제거하려고 했습니까? –
그래, 그 결과는 동일합니다 : "오류", 그리고 더 이상의 정보가 주어지지 않습니다. webservice 자체의 콘솔 로그는 꽤 잘 보입니다. 정확한 구현은 모르지만 요청한 객체를 보낸 것처럼 보입니다. – Weizen