これはどのような、本質的にはAJAXがあるため。ページが読み込まれ、要素にイベントが追加されます。ユーザーが何かをクリックするなどしてイベントをトリガーすると、JavascriptはXMLHttpRequestオブジェクトを使用してサーバーにリクエストを送信します。
サーバーが(おそらく出力で)応答した後、別のJavascript関数/イベントが、他のHTMLのようにページに貼り付けるなど、その出力を操作する場所を提供します。
プレーンなJavascriptを使用して「手動で」実行することも、jQueryを使用することもできます。プロジェクトのサイズや特定の状況によっては、プレーンなJavascriptを使用する方が簡単な場合があります。
プレーンJavascript
この非常に基本的な例ではmyAjax.php
、ユーザーがリンクをクリックしたときににリクエストを送信します。サーバーはいくつかのコンテンツ(この場合は「helloworld!」)を生成します。idを使用してHTML要素に挿入しますoutput
。
javascript
function getOutput() {
getRequest(
'myAjax.php',
drawOutput,
drawError
);
return false;
}
function drawError() {
var container = document.getElementById('output');
container.innerHTML = 'Bummer: there was an error!';
}
function drawOutput(responseText) {
var container = document.getElementById('output');
container.innerHTML = responseText;
}
function getRequest(url, success, error) {
var req = false;
try{
req = new XMLHttpRequest();
} catch (e){
try{
req = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try{
req = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
return false;
}
}
}
if (!req) return false;
if (typeof success != 'function') success = function () {};
if (typeof error!= 'function') error = function () {};
req.onreadystatechange = function(){
if(req.readyState == 4) {
return req.status === 200 ?
success(req.responseText) : error(req.status);
}
}
req.open("GET", url, true);
req.send(null);
return req;
}
HTML
<a href="#" onclick="return getOutput();"> test </a>
<div id="output">waiting for action</div>
PHP
<?php
echo 'hello world!';
?>
試してみてください:http://jsfiddle.net/GRMule/m8CTk/
javascriptライブラリを使用(jQuery et al)
間違いなく、それは多くのJavascriptコードです。もちろん、ブロックを締めたり、より簡潔な論理演算子を使用したりすることで、これを短縮できますが、まだ多くのことが行われています。プロジェクトでこの種のことをたくさん行うことを計画している場合は、javascriptライブラリを使用したほうがよい場合があります。
上記と同じHTMLとPHPを使用して、これがスクリプト全体です(jQueryがページに含まれています)。jQueryの一般的なスタイルとの一貫性を高めるためにコードを少し厳しくしましたが、次のようなアイデアが得られます。
function getOutput() {
$.ajax({
url:'myAjax.php',
complete: function (response) {
$('#output').html(response.responseText);
},
error: function () {
$('#output').html('Bummer: there was an error!');
}
});
return false;
}
試してみてください:http://jsfiddle.net/GRMule/WQXXT/
まだjQueryを急がないでください。ライブラリを追加しても、プロジェクトを作成した場合と同じように、数百行または数千行のコードがプロジェクトに追加されます。jQueryライブラリファイル内には、最初の例と同様のコードに加えて、さらに多くのコードがあります。それは良いことかもしれませんが、そうではないかもしれません。プロジェクトの現在のサイズと将来の拡張の可能性、およびターゲット環境またはプラットフォームを計画し、検討します。
これがあなたがする必要があるすべてであるならば、一度プレーンなjavascriptを書いてください、そして、あなたは終わりです。
ドキュメンテーション