내가 시도 :어떻게 responseText가 GM_xmlhttpRequest에서 반환합니까?
GM_xmlhttpRequest({
method: "GET",
url: "...",
onload: function(response) {
r = response.responseText;
}});
alert(r); //undefined
이 어떻게합니까?
내가 시도 :어떻게 responseText가 GM_xmlhttpRequest에서 반환합니까?
GM_xmlhttpRequest({
method: "GET",
url: "...",
onload: function(response) {
r = response.responseText;
}});
alert(r); //undefined
이 어떻게합니까?
이 기본적으로
일어나고 왜, XMLHttpRequest의 사용 아약스 요청은 비동기. 즉, 메서드 호출은 즉시 반환되고 요청이 백그라운드에서 진행되는 동안 주 실행이 계속됩니다. 요청이 완료되면 콜백 메소드가 요청 결과와 함께 호출됩니다. 따라서 (비동기) 요청이 완료되기 전에 경고가 실행됩니다.
해결 방법 1 : 콜백 당신은 당신이 콜백을 사용하고 비동기 동작을 계속 사용하도록 코드를 다시 작성할 수있는 가능성이 있도록 동기 응답 텍스트 필요할 것 이유에 대한 컨텍스트를 제공하지 않은
-이 대개 좋은 습관입니다.
해결 방법 2 : 당신이 절대적으로 동 기적으로 요청을해야 함을 발견하면 강제 동기 요청
그러나, 당신은 당신이 아약스 요청이 동 기적으로 할 것을 요청할 수 있음을 확인할 수 있습니다. Greasemonkey를 사용하면 GM_xmlhttpRequest
을 호출 할 때 documented here과 같은 옵션 synchronous: true
을 사용해야합니다. 문서에 따르면
주의 : 요청이 완료 될 때까지 전체 Firefox UI가 잠기고 고정됩니다. 이 모드에서는 반환 값에서 더 많은 데이터를 사용할 수 있습니다.
브라우저에서 XHR 개체를 사용하면 passing false
as the second parameter to XMLHTTPRequest#open
과 같은 결과를 얻을 수 있습니다.
당신이 그리스 몽키의 이전 버전으로 작업하는 경우,이에 대한 답변은 SO 질문은 유용 할 수 있습니다 [: 호출 기능에 GM_xmlhttpRequest 반환 값 Greasemonkey와 (http://stackoverflow.com의 How to make synchronous AJAX calls in greasemonkey?
중복/questions/7196772/greasemonkey-gm-xmlhttprequest-return-value-to-calling-function) –