2013-07-20 3 views
1

이 문제로 인해 나를 미치게되었습니다. 나는 정말 바보 같은 짓을하고있을거야.하지만 그게 뭔지 알 수는 없어.Ajax가 Q와 jQuery를 사용하여 호출합니다.

jQuery와 함께 Q 약속 라이브러리를 사용하고 싶습니다. 나는 0.9.6 버전의 Q와 1.9.1 버전의 jQuery (모두 bower를 통해 설치)를 가지고있다.

This discussion이 같은 뭔가 작업을해야합니다 (마지막에) 의미 :이 jQuery를 버전 1.9.1로 Q를 사용하는 방법을 경우

var promise = Q.when($.get("https://github.com/kriskowal/q")); 

내가 완전히 말할 수 없다 (분명히이되어왔다 약속과 관련하여 jQuery의 변경 사항이 많음). 하지만 파이어 폭스의 콘솔 (Q와 jQuery가 현재 페이지에서로드 됨)에서이 파일을 실행하면 Ajax 호출이 올바르게 시작될 것입니다 (파이어 버그는 200의 상태 코드와 함께 리턴 함을 의미합니다). 그러나 약속은 거절당한 듯합니다 (제가 말할 수있는 한). 거부로

promise.inspect(); 

이는 statis를 나열 : 내가 할 경우 예를 들어

. 나는이 같은 내 약속을 실행할 경우

var promise = Q.when($.get("https://github.com/kriskowal/q")).fail(function(x) { console.log("Failed"); }) 

내가 인수로 fail 방법에 전달되는 것을 보면, 그것은 (적어도 지금까지 내가 말할 수있는)를 jQuery를 약속 개체처럼 보이는 실제로 많은 빛을 흘리지는 않습니다 (실패에 대한 "이유"가되는 자격으로 살아가는 것 같지는 않습니다).

나는 다양한 순열과 조합을 시도했지만, 어둠 속에서 더 이상 어렴풋이 아닌 대신에 호소해야한다고 생각했습니다.

모든 도움을 주시면 감사하겠습니다.

답변

0

좋아,이 문제의 핵심은 아마도 CORS 문제라고 생각합니다. jQuery 및 Q 라이브러리를 제공하는 사이트 (즉, 위의 방화범 요청 세션을 실행할 때로드 한 페이지)에 Origin 헤더가 없습니다.

나는 이것을 확인하기 위해 파고 들지만, (Ajax를 통해) 액세스하려고하는 API와 동일한 사이트에서 jQuery와 Q를 제공했을 때, 모든 것이 작동하기 시작했다. Firebug 및/또는 jQuery가 다양한 약속이 실패했을 때 CORS 오류를 실제로 전달한 경우라면 좋았을 것입니다. :-(

관련 문제