2009-06-11 3 views
2

저는 jquery와 어느 정도 자바 스크립트 프로그래밍을 처음 접했습니다. 성공적으로 내 아약스 호출에 jquery를 사용하기 시작했습니다. 그러나 나는이 문제가 뉴비 질문이지만 여기에 있습니다.jquery, ajax 및 전체 HTML 구조 다시 받기

나는 ajax를 호출하여 테이블 구조에 완전한 html 구조체를 반환하려고한다. 그러나 jquery가 html 태그를 제거하고 "텍스트"의 가장 깊은 레벨 만 삽입하거나 <, > 등의 특수 문자를 삽입하는 경우도 있습니다.

전환 방법을 알아야합니다. 수신 된 문자의이 처리를 중단합니다. 파이어 버그를 사용하여 내 웹 서버에서 응답이 제대로 나오지만 사용자가받은 페이지가 jquery에 의해 처리되므로 잘못된 것입니다. 간단한 예가 제가 의미하는 바입니다.

은 제가 페이지 소스보기가 이것이다 할 경우 내 페이지에 보여줍니다 어떤이

<results><table id="test"><tr>test</tr></table></results> 

같은 것을 보내고있다.

&lt;results&gt;&lt;table.... 

그래서 특수 문자가 변환되는 것을 볼 수 있으며이를 멈추는 방법을 알지 못합니다.

아이디어는 <results></results>이 xml 태그이고 해당 태그의 텍스트가 내 페이지의 기존 <div>에 삽입되는 것으로 간주됩니다. 내가 "HTML"이외의 다양한 옵션처럼, "XML", "텍스트"등을 시도했습니다

$.post(url, params, function(data) 
{ 
    $('#queryresultsblock').text(data) 
}, "html"); 

: 여기

내가 응답 및 삽입을 끌어 사용하고있어 javascipt입니다 그들 모두는 여러 가지 일을합니다. "html"은 지금까지 내가 가장 가까운 것을 얻습니다.

도움 주셔서 감사합니다.

팀은

+1

. 당신이 실제로보고있는 것을 보여주기 위해 고칠 수 있습니까? –

+0

@timashman : 응답을 실제로 내리고 페이지에 삽입하는 코드가 누락되었습니다. 그게 중요합니다. 무엇을 사용하고 있습니까? – Shog9

+0

@ shog9 : 여기에 응답을 삽입하고 삽입하는 데 사용하는 javascipt가 있습니다. $ .post (url, params, function (data) {$ ('# queryresultsblock'). 텍스트 (데이터)}, "html"); 나는 "xml", "text"등과 같은 "html"이외의 다양한 옵션을 시도했다. 그들은 모두 다양한 일을한다. "html"은 나에게 가장 가까운 것을 얻는다. –

답변

2

가장 간단한 방법은 원시 HTML을 반환하고 html jQuery 메서드를 사용하는 것입니다.

귀하의 결과 :

<table id="test"><tr>test</tr></table> 

자바 스크립트 호출 :

$.post(url, params, function(data){ $('#queryresultsblock').html(data) }) 

적은 제어 또 다른 방법 - 당신은 단지 GET 요청을 할 수있는 -하지만 단순이는 load 사용 :

$("#queryresultsblock").load(url); 
(210)

당신이 results XML 태그에 결과를 반환해야하는 경우, 당신은 당신의 load 전화에 jQuery를 선택기를 추가 시도 할 수 있습니다 :

StackOverflow의 결과의 두 번째 세트를 잘못 해석처럼 보이는
$("#queryresultsblock").load(url + " #test"); 
+0

감사합니다. 이것은 그것을했다. jquery 지식이 부족하다는 것을 알았습니다. –

+0

너무 좋지는 마세요. $ .text 페이지에 작은 메모가 있습니다 (한 번 그 문제가있었습니다). "[$ .text]는 HTML로 올바르게 렌더링되도록 [$ .text]가 제공된 문자열을 이스케이프 처리한다는 점에 유의해야합니다. 이렇게하려면 DOM 메서드 .createTextNode()를 호출합니다.이 메서드는 특수 문자를 HTML 엔티티에 해당하는 요소 (예 : < <) **. $ .html()은 실제로 .innerHTML을 사용하여 요소로 DOM에 다시 넣습니다. – Benno

1

당신은 XML의 내부 이스케이프 HTML을 넣을 수 없습니다. 좋은 방법으로 볼 수있는 두 가지 옵션이 있습니다.

한 가지 방법은 XML에서 이스케이프 된 HTML을 보낸 다음 클라이언트 측에서 일부 JavaScript가 해당 HTML을 이스케이프 처리하도록하는 것입니다. 그래서 당신은

<results>&lt;results&gt;&lt;table.... 

를 보낼 것입니다 그리고 자바 스크립트는 < 등으로 &lt; 변환합니다.

다른 옵션과 내가하는 것은 XML 대신 JSON을 사용하는 것입니다.

{'results': "<table id="test"><tr>test</tr></table>" } 

자바 스크립트 문자열로 그 HTML 구조를 추출하고 탈출 또는 unescaping을 모든 종류의없이 귀하의 페이지에 직접 삽입 할 수 있어야한다.

+0

실제로 CDATA를 사용하여 이스케이프 처리되지 않은 태그를 XML에 배치 할 수 있습니다. http://www.w3schools.com/XML/xml_cdata.asp –

+0

감사합니다. 내 자바 스크립트 반환 함수에서 그냥 경고 (데이터) 올바른 텍스트가있는 할당 문을 바꿀 경우 ... 그래서 그것은 jquery 입력을 처리하는이 변환을하고있다, 거기에 강제로 또는 사용하는 방법입니다 이 텍스트를 받아들이 기위한 jquery의 프로세스. –

0

당신이 할 수있는 다른 일은 HTML 코드 단편으로 외부 .html 파일을 만드는 것입니다. 그래서 include.html을 포함하여 include.html을 작성하십시오.

<results><table id="test"><tr>test</tr></table></results> 

내용으로 jquery.load 함수를 사용하여 페이지로 가져 오십시오. 보기에 그것을 참조하십시오 here.