1

これを行うにはJQueryの方法があることは知っていますが、それは今必要なものではありません。

ページのコンテンツを div にプルする次の JavaScript がありますが、ページ全体ではなく、そのページの 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;
}

そして、私はそれを次のように呼びます:

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

page.php からロードするセレクターはどこで指定すればよいですか?

4

1 に答える 1

2

通常、AJAX アプリケーションでは、HTML フラグメントを取得するために、クライアント側でフラグメントを選択するのではなく、サーバーがフラグメントを返します。たとえば、セクション 4 の簡単な例を参照してください。クールな AJAX の例。参考までに、ウェブサイトのコードを以下に示します。

<?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']));
?>

<span>PHP ページは、完全な html ではなく のみを含む HTML フラグメントを返すだけであることに注意してください。これは、ページ全体を返す必要がないという AJAX 呼び出しの利点の 1 つであり、ペイロードが小さいため、帯域幅のコストを節約できます。

于 2011-09-07T15:09:30.453 に答える