2011-09-07 1 views
1

JQuery를 사용하는 방법이 있다는 것을 알고 있지만 지금 당장 필요한 것은 아닙니다.AJAX - no JQuery가 포함 된 웹 페이지의 일부분로드

I 사업부로 페이지의 콘텐츠를 가져옵니다 다음과 같은 자바 스크립트, 그러나 나는 전체 페이지, 해당 페이지에서 DIV 단지 내용 싶지 않아 있습니다

function ahah(url, target) { 
document.getElementById(target).innerHTML ='<img src="ajax-loader.gif"/>'; 
if (window.XMLHttpRequest) { 
req = new XMLHttpRequest(); 
} else if (window.ActiveXObject) { 
req = new ActiveXObject("Microsoft.XMLHTTP"); 
} 
if (req != undefined) { 
req.onreadystatechange = function() {ahahDone(url, target);}; 
req.open("GET", url, true); 
req.send(""); 
} 
} 

function ahahDone(url, target) { 
    if (req.readyState == 4) { // only if req is "loaded" 
    if (req.status == 200) { // only if "OK" 
     document.getElementById(target).innerHTML = req.responseText; 
    } else { 
     document.getElementById(target).innerHTML=" Error:\n"+ req.status + "\n" +req.statusText; 
    } 
    } 
} 

function load(name, div) { 
ahah(name,div); 
return false; 
} 

그리고 내가 전화를 like :

<a href="page.php" onclick="load('page.php','ajaxcontent');return false;" class="slide_more">LOAD</a> 

여기서 page.php에서로드 할 선택기를 지정해야합니까?

+0

전체 페이지의 일부분 만 원하면 DIV를 그냥 사용해서는 안됩니다 전체 페이지를 다시 보내는 대신 서버에서 돌아 오는 페이지일까요? – momo

+0

그게 바로 내가 여기있는 이유입니다. 어떻게 해야할지 모르겠습니다. 위의 코드에서 전체 페이지 대신 div 만 얻으려면 무엇을 변경해야할지 전혀 알 수 없습니다. – elbatron

+0

page.php는 DIV를 반환해야하는 사람입니다. 귀하의 클라이언트 자바 스크립트 코드는 페이지를 자르고 DIV를 얻을 사람이 아닙니다. 그런 식으로 정상적으로 처리되지 않습니다. – momo

답변

2

일반적으로 AJAX 애플리케이션에서 HTML 조각을 얻으려면 서버가 클라이언트 측에서 선택된 대신 프래그먼트를 리턴하는 사람이어야합니다. 예를 들어, 섹션 4의 Simple Example을 참조하십시오. Cool AJAX 예제. 웹 사이트에서 코드 참조를 위해 아래에 제공된 경우 : PHP 페이지가 바로 <span> 만 대신 전체 HTML을 포함하는 HTML 조각을 반환하는 것을

<?php 
function validate($name) { 
    if($name == '') { 
    return ''; 
    } 

    if(strlen($name) < 3) { 
    return "<span id=\"warn\">Username too short</span>\n"; 
    } 

    switch($name) { 
    case 'bob': 
    case 'jim': 
    case 'joe': 
    case 'carol': 
     return "<span id=\"warn\">Username already taken</span>\n"; 
    } 

    return "<span id=\"notice\">Username ok!</span>\n"; 
} 

echo validate(trim($_REQUEST['name'])); 
?> 

알 수 있습니다. 이것은 AJAX 호출의 장점 중 하나입니다. 페이로드가 더 작기 때문에 전체 페이지를 반환 할 필요가 없으므로 대역폭 비용을 절약 할 수 있습니다.

+0

확인. 나는 그것을 지금 이해한다. 정말 거기에 당신이 끌어 오기 원하는 부분은 클라이언트 쪽 정의 된 순수한 자바 스크립트 JQuery로드 같은 것을 생각했습니다. 예를 들어 주셔서 감사합니다. 제게는 효과가 없을 것 같습니다. 저는 Wordpress 사이트에서 정보를 가져오고 싶습니다. 그냥 루프에 PHP를 넣을 수는 없습니다. – elbatron

+0

개인적으로 직접 시도하지는 않았지만 원하는 작업을 수행 할 수있는 jQuery로 가능한 트릭을 생각할 수 있습니다. 원하는 경우 jQuery로 간단한 예제를 시도해 볼 수 있으며 작동하는지 확인하십시오. – momo

+0

감사합니다. Momo. 실제로 jQuery로드를 사용하지만 실제로 HTML 조각 호출을 발생시키는 링크가 파싱 된 XML 파일에 있고 내부에서 정의 된 jQuery 호출과의 링크가 작동하지 않기 때문에 자바로 전환했습니다. href onlick = ""괜찮은 것 같습니다 ... – elbatron