本质上,这就是AJAX的作用。页面加载,然后将事件添加到元素。当用户导致事件被触发时,例如通过单击某些内容,您的Javascript使用XMLHttpRequest对象将请求发送到服务器。
服务器响应后(大概带有输出),另一个Javascript函数/事件为您提供了处理该输出的位置,包括像其他HTML片段一样将其粘贴到页面中。
您可以使用纯Javascript“手动”完成操作,也可以使用jQuery。根据项目的大小和特定情况,仅使用普通Javascript可能会更简单。
纯Javascript
在这个非常基本的示例中,myAjax.php
当用户单击链接时,我们向其发送请求。服务器将生成一些内容,在本例中为“ hello world!”。我们将把带有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等)
可以说,这是很多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,然后就可以完成。
文献资料