2008-10-24 1 views
0

이것은 ajax "alternate flow"질문 중 하나입니다. 일반적으로 내 아약스 요청은 페이지의 일부를 반환 할 것으로 기대합니다. 그러나 때로는 html, head 및 body 태그가있는 전체 페이지를 반환 할 수 있습니다.자바 스크립트 문자열의 콘텐츠로 전체 웹 페이지를 다시로드 할 수 있습니까?

내가 아약스 요청에서 돌아 왔을 때 이것이 전체 페이지인지 감지 할 수 있지만, 전체 문자열을 기반으로 전체 페이지를 다시로드 할 수 있습니까?

은 (그리고 그래, 내가 body 요소를 교체 시도했다, 그러나 그것은 나에게 이벤트를 제공하지 않습니다 나를 헤드 블록의 내용을 변경할 수 없습니다)

모든 프레임 워크 참조는 괜찮

+0

이 단지를 생성하는 것이 더하지 않을까요 ... 나는 당신이 원래의 질문에 미끄러 져 한 이유로 당신이라면 피하려고 필사적으로 을 거라고 서버에 새 HTML을 추가하고 지정된 URL에 새 페이지를로드하라는 AJAX 응답을 보냅니다. –

+0

망치로 손톱을 망치는 경우 갑자기 내 망치를 드라이버로 사용할 수 있습니까? 도구는 나쁜 디자인을 통해 의도 한 용도와 반대의 용도로 사용하려고하면 이러한 종류의 문제에 봉착하게됩니다. –

+0

현실적인 물기. 리디렉션 솔트 레이션과 추가 헤더를 결합하면 더 우아한 방법입니다. – krosenvold

답변

2

직접 할 수 있다고 생각하지 않습니다.

어딘가에 HTML을 저장하고 검색 할 수있는 URL을 보내면 더 좋을 것입니다. location.href = ...;

0

적어도 에서 window.location 속성을 사용할 수 있습니다. 위치 개체 에는 문서의 URL에 대한 정보가 포함되어 있으며 해당 URL을 변경하는 방법이 제공됩니다. 이 속성에 다른 URL을로드하도록 지정할 수도 있습니다.

다큐먼트에서 예 :

Replace the current document with the one at the given URL: 

function goMoz() { 
    window.location = "http://www.mozilla.org"; 
} 

// in html: <button onclick="goMoz();">Mozilla</button> 
2

당신이 HTTP status code의에 따라 AJAX request 수행 할 작업을 결정할 수 있습니다. 당신이 301을받을 경우

window.location를 사용하여 리디렉션 할 수있는 ("영구적으로 이동") :

new Ajax.Request(url, { 
    method: 'get', 
    // status 200: yadaa 
    onSuccess: function(transport) { 
    // doSomething 
    }, 
    // status 301: moved permanently 
    on301: function(transport){ 
    window.location = transport.responseText; 
    } 
}); 
+0

전체 페이지 리디렉션을 나타 내기 위해 302에서 추가 헤더 필드를 사용하는 경우 특히 유용합니다. – krosenvold

+0

불행히도 이것은 301/302가 프로토 타입 (브라우저에 의해 처리되고 자바 스크립트에 도달하지 않음)에 이르지 않는 것 같으므로 작동하지 않는 것처럼 보입니다. – krosenvold

0

에서는 window.location = "같은-URL-AS-IM-at.aspx을";

...? HTML 문서에 그것을 할

직접 내가

관련 문제