2011-09-04 2 views
0

아약스 전화가 있습니다. responseText는 아래의 while 루프를 사용하여 반환됩니다. 임베디드 자바 스크립트가로드되지 않는 한 모든 것이 잘 작동합니다. 내 솔루션은 자바 스크립트를 사용하여 클라이언트 측에서 할 수있는만큼 많은 HTML을 빌드하는 것입니다. 이 xhtml을 모두 클라이언트에서 빌드 할 수있는 가장 간단한 방법은 무엇입니까? 가장 간단한 방법은 createElement ('div')를 작성하고 모든 요소를 ​​개별적으로 추가하는 것입니다. 이것이 내가 현재하고있는 일입니다. 그러나 아래의 코드가 실패했기 때문에 이것이 좋은 해결책인지 알고 싶었습니다. 더 중요한 것은 HTML을 가져 와서 javascript로 변환하는 스크립트가 있다는 것입니다. 이것이 이상적이라고 생각합니다.html/php 대 DOM/javascript

while ($a = mysqli_fetch_assoc($query_return)) 
    { 
    $date = date('M j \a\t g:i:s a', $a[time]); 
    echo "<div class=\"Bb2b\"><img class=\"a\" src=\"p/$a[email].jpg\" alt=\"\"/><a class=\"a\" href=\"javascript:void(0)\">$a[fname] posted <script type=\"text/javascript\">v0($a[time],$time)</script></a><br/><p class=\"c\">$a[message]</p></div>"; 
    } 
+0

div를 만들고 HTML 코드를 추가 한 후에 div로 무엇을하고 있습니까? 당신은 페이지 어딘가에 그것을 삽입해야합니다 – galchen

답변

0

javascript가 동적으로 변경되지 않는 올바른 동작은 .innerHTML입니다. 페이지 DOM에 삽입하면됩니다. eval()을 사용하여 그러한 조각을 수동으로 실행해야합니다. 그러나 당신은 클라이언트 쪽에서 xhtml을 만들고 싶다고 말합니다 - 이것은 당신이하고있는 것의 정확한 타당한 것으로 보입니다 (PHP에서 많은 HTML을 생성합니다).

JSON을 사용하여 데이터를 전송하는 것이 좋습니다. PHP에서는 json_encode() 함수를 사용하여 변수를 JSON 문자열로 직접 변환 할 수 있습니다. 코드가 클라이언트 측에서

while ($a = mysqli_fetch_assoc($query_return)) 
{ 
    $a[date] = date('M j \a\t g:i:s a', $a[time]); 
    echo json_encode($a); 
} 

처럼 보일 수있는 그런 식으로, 당신은 JQuery와 사용할 수 있습니다 (또는 다른 괜찮은 AJAX 라이브러리) JS 객체에 직접 문자열을 구문 분석 할 수 있습니다. 이것은 전송 된 데이터의 양을 줄이고 eval을 사용할 때 발생할 수있는 보안 문제를 제거 할 수 있다는 장점이 있습니다. 임시가 더 온도가 고정 포함 fix..as로

+0

나는 조금 더 의미를 만들기 위해 내 질문을 업데이 트 해줘서 고마워. 그래서 하나는 평가판을 사용할 수 있지만 최상의 방법은 JS 객체로 빌드하는 것입니다. 이 올바른지? 또한 JQuery 나 비슷한 것을 사용하여 어떻게 fromt를 쓰지 않고 링크를 만들 수 있습니까? –

+0

^http://api.jquery.com/jQuery.getJSON/을보십시오. –

0

평가 난 그냥

// HTML string 
var s = 'responseHTML'; 

var div = document.createElement('div'); 
div.innerHTML = s; 
var elements = div.childNodes; 

나중에 그냥 보낼 것입니다이 조각을 사용하여 DOM에 HTML을로드하는거야 ... 작동하지 않았다 데이터 및 HTML 구조를 보내는 오버 헤드를 줄이기 위해 최종 솔루션으로 DOM에서 구축.