AJAX是开发者的梦想,因为你可以:
HTML页面
让AJAX更改这段文字
HTML页面包含一个 该函数从Web服务器请求数据并显示它 上面示例中使用的 "ajax_info.txt" 文件是一个简单的文本文件,内容如下: AJAX不是一种编程语言。 AJAX是一种从网页访问Web服务器的技术。 AJAX代表异步JavaScript和XML。 AJAX = 异步JavaScript和XML。 AJAX不是一种编程语言。 AJAX只是使用以下组合: AJAX是一个具有误导性名称的技术。AJAX应用程序可能使用XML传输数据,但以纯文本或JSON文本传输数据同样常见。 AJAX允许通过在幕后与Web服务器交换数据,异步更新Web页面。这意味着可以更新Web页面的部分,而不必重新加载整个页面。 AJAX的核心是XMLHttpRequest对象。 所有现代浏览器都支持XMLHttpRequest对象。 XMLHttpRequest对象可用于在幕后与服务器交换数据。这意味着可以更新Web页面的部分,而无需重新加载整个页面。 创建XMLHttpRequest对象的语法: 示例: 上面示例中使用的 "ajax_info.txt" 文件是一个简单的文本文件,内容如下: AJAX不是一种编程语言。 AJAX是一种从网页访问Web服务器的技术。 AJAX代表异步JavaScript和XML。 出于安全原因,现代浏览器不允许跨域访问。 这意味着网页和它尝试加载的XML文件必须位于同一服务器上。 W3Schools的示例都打开位于W3Schools域上的XML文件。 如果您想在自己的网页上使用上述示例,则加载的XML文件必须位于您自己的服务器上。 XMLHttpRequest对象用于与服务器交换数据。 要向服务器发送请求,我们使用XMLHttpRequest对象的 方法描述: GET还是POST? GET比POST更简单更快,并且在大多数情况下都可以使用。 但是,在以下情况下始终使用POST请求: GET请求 一个简单的GET请求: 示例: 在上面的示例中,您可能会得到一个缓存的结果。为了避免这种情况,向URL添加一个唯一的ID: 示例: 如果要使用GET方法发送信息,请将信息添加到URL: 示例: POST请求 一个简单的POST请求: 示例 要像HTML表单一样发送POST数据,请使用 示例 方法描述: 文件可以是任何类型的文件,如 .txt 和 .xml,或服务器脚本文件,如 .asp 和 .php(它们可以在发送响应之前在服务器上执行操作)。 服务器请求应该异步发送。 通过异步发送,JavaScript无需等待服务器响应,而是可以: 使用XMLHttpRequest对象,您可以定义在请求接收答案时要执行的函数。 该函数在XMLHttpResponse对象的 上面示例中使用的 "ajax_info.txt" 文件是一个简单的文本文件,内容如下: AJAX不是一种编程语言。 AJAX是一种从网页访问Web服务器的技术。 AJAX代表异步JavaScript和XML。 要执行同步请求,将 有时候 由于代码将等待服务器完成,因此无需 示例 不推荐使用同步XMLHttpRequest( 同步XMLHttpRequest正在从Web标准中删除的过程中,但此过程可能需要很多年。 现代开发工具建议警告使用同步请求,可能在发生时抛出 在AJAX中,通过 定义在 保存 XMLHttpRequest 的状态。 200:"OK" 获取完整列表请查看 Http Messages Reference 返回状态文本(例如 "OK" 或 "Not Found") 每次 当 示例 上述示例中使用的 "ajax_info.txt" 文件是一个简单的文本文件。 AJAX 不是一种编程语言。 AJAX 是一种从网页访问 Web 服务器的技术。 AJAX 代表异步 JavaScript 和 XML。 回调函数是作为参数传递给另一个函数的函数。 示例 示例 AJAX XML 示例 AJAX可用于与XML文件进行交互式通信。以下是一个展示如何使用AJAX从XML文件中获取信息的示例: 示例说明 当用户点击上面的 "获取 CD 信息" 按钮时,将执行 当服务器响应就绪时,将构建一个HTML表格,从XML文件中提取节点(元素),最终使用包含XML数据的HTML表格更新 "demo" 元素: 在上述示例中,通过点击按钮触发 AJAX PHP 示例 AJAX可用于创建更交互式的应用程序。以下示例演示了如何在用户在输入字段中输入字符时,网页可以与Web服务器通信: 示例说明 在上述示例中,当用户在输入字段中键入字符时,将执行名为 "showHint()" 的函数。该函数由 以下是HTML代码: 在下面的输入字段中开始输入名字: 建议: 代码解释 首先,检查输入字段是否为空( 但是,如果输入字段不为空,则执行以下操作: PHP文件检查一个包含名字的数组,并将相应的名字返回给浏览器: 在上述示例中,当用户在输入字段中输入字符时,通过AJAX与服务器通信,并从PHP文件中获取相应的建议。建议将在 "txtHint" 元素中显示。 AJAX ASP 示例 AJAX可用于创建更交互式的应用程序。以下示例演示了如何在用户在输入字段中输入字符时,网页可以与Web服务器通信: 示例说明 在上述示例中,当用户在输入字段中键入字符时,将执行名为 "showHint()" 的函数。该函数由 以下是HTML代码: 在下面的输入字段中开始输入名字: 建议: 代码解释 首先,检查输入字段是否为空( 但是,如果输入字段不为空,则执行以下操作: ASP文件检查一个包含名字的数组,并将相应的名字返回给浏览器: 在上述示例中,当用户在输入字段中输入字符时,通过AJAX与服务器通信,并从ASP文件中获取相应的建议。建议将在 "txtHint" 元素中显示。 AJAX 数据库示例 AJAX可用于与数据库进行交互式通信。以下示例演示了如何使用AJAX从数据库获取信息: 示例 选择一个客户: 示例说明 - showCustomer() 函数 当用户在上面的下拉列表中选择一个客户时,将执行名为 "showCustomer()" 的函数。该函数由 "onchange" 事件触发: 注意,将一个参数( 由上面的 JavaScript 调用的服务器上的页面是一个名为 "getcustomer.php" 的 PHP 文件。 "getcustomer.php" 中的源代码针对数据库运行一个查询,并以 HTML 表格的形式返回结果: 在上述示例中,当用户选择一个客户时,通过AJAX与服务器通信,并从数据库中获取相应的客户信息。客户信息将以HTML表格的形式显示在具有 "txtHint" ID 的元素中。 此示例循环遍历每个 此示例使用一个函数来在具有id="showCD"的HTML元素中显示第一个CD元素: 要在上述示例中在CD之间导航,添加 最后一个示例显示了当用户点击CD时如何显示专辑信息: 为了方便其他设备和平台的小伙伴观看往期文章: 微信公众号搜索: 看完如果觉得有帮助,欢迎点赞、收藏、关注
调用一个函数(如果被点击)
function loadDoc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("demo").innerHTML = this.responseText;
}
};
xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
}
AJAX
什么是AJAX?
AJAX的工作原理
AJAX - XMLHttpRequest对象
XMLHttpRequest对象
创建XMLHttpRequest对象
variable = new XMLHttpRequest();
var xhttp = new XMLHttpRequest();
AJAX
跨域访问
XMLHttpRequest对象方法
方法
描述
new XMLHttpRequest()
创建一个新的XMLHttpRequest对象
abort()
取消当前请求
getAllResponseHeaders()
返回标头信息
getResponseHeader()
返回特定标头信息
open(method,url,async,user,psw)
指定请求
send()
将请求发送到服务器
send(string)
将请求发送到服务器
setRequestHeader()
将标签/值对添加到要发送的标头
XMLHttpRequest对象属性
属性
描述
onreadystatechange
定义在readyState属性更改时调用的函数
readyState
保存XMLHttpRequest的状态。
responseText
以字符串形式返回响应数据
responseXML
以XML数据形式返回响应数据
status
返回请求的状态码
statusText
返回状态文本(例如 "OK" 或 "Not Found")
AJAX - 发送请求到服务器
发送请求到服务器
open()
和send()
方法:xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
open(method, url, async)
:指定请求类型
send()
:将请求发送到服务器(用于GET)send(string)
:将请求发送到服务器(用于POST)
xhttp.open("GET", "demo_get.asp", true);
xhttp.send();
xhttp.open("GET", "demo_get.asp?t=" + Math.random(), true);
xhttp.send();
xhttp.open("GET", "demo_get2.asp?fname=Henry&lname=Ford", true);
xhttp.send();
xhttp.open("POST", "demo_post.asp", true);
xhttp.send();
setRequestHeader()
添加带有HTTP头的请求。在send()
方法中指定要发送的数据:xhttp.open("POST", "demo_post2.asp", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("fname=Henry&lname=Ford");
setRequestHeader(header, value)
:向请求添加HTTP头
文件位于服务器上的URL
open()
方法的url参数是指向服务器上文件的地址:xhttp.open("GET", "ajax_test.asp", true);
异步 - True还是False?
open()
方法的async参数应设置为true:xhttp.open("GET", "ajax_test.asp", true);
onreadystatechange
属性onreadystatechange
属性中定义:xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("demo").innerHTML = this.responseText;
}
};
xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
AJAX
同步请求
open()
方法中的第三个参数更改为false:xhttp.open("GET", "ajax_info.txt", false);
async = false
用于快速测试。您还会在旧的JavaScript代码中找到同步请求。onreadystatechange
函数:xhttp.open("GET", "ajax_info.txt", false);
xhttp.send();
document.getElementById("demo").innerHTML = xhttp.responseText;
async = false
),因为JavaScript将停止执行,直到服务器响应准备就绪。如果服务器很忙或很慢,应用程序将挂起或停止。InvalidAccessError
异常。AJAX - 服务器响应
onreadystatechange
属性、readyState
属性、status
属性和statusText
属性来管理XMLHttpRequest对象的状态和服务器响应。
onreadystatechange
属性readyState
属性更改时要调用的函数。readyState
属性
status
属性
403:"Forbidden"
404:"Page not found"statusText
属性readyState
更改时都会调用 onreadystatechange
函数。readyState
为 4 且 status
为 200 时,表示响应已准备好。function loadDoc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("demo").innerHTML =
this.responseText;
}
};
xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
}
AJAX
onreadystatechange
事件被触发四次(1-4),每次 readyState
更改都会触发一次。使用回调函数
loadDoc("url-1", myFunction1);
loadDoc("url-2", myFunction2);
function loadDoc(url, cFunction) {
var xhttp;
xhttp=new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
cFunction(this);
}
};
xhttp.open("GET", url, true);
xhttp.send();
}
function myFunction1(xhttp) {
// 具体操作在这里
}
function myFunction2(xhttp) {
// 具体操作在这里
}
服务器响应属性和方法
responseText
以字符串形式获取响应数据responseXML
以 XML 数据形式获取响应数据getAllResponseHeaders()
从服务器资源返回所有标头信息getResponseHeader()
从服务器响应返回特定的标头信息var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("demo").innerHTML = this.getAllResponseHeaders();
}
};
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("demo").innerHTML = this.getResponseHeader("Last-Modified");
}
};
xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
loadDoc()
函数。loadDoc()
函数创建一个XMLHttpRequest对象,添加在服务器响应就绪时要执行的函数,并将请求发送到服务器。LoadXMLDoc()
function loadDoc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myFunction(this);
}
};
xhttp.open("GET", "cd_catalog.xml", true);
xhttp.send();
}
function myFunction(xml) {
var i;
var xmlDoc = xml.responseXML;
var table = "
";
var x = xmlDoc.getElementsByTagName("CD");
for (i = 0; i 标题 艺术家 " +
x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue +
" " +
x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue +
" ";
}
document.getElementById("demo").innerHTML = table;
}
loadDoc()
函数,该函数使用AJAX从名为 "cd_catalog.xml" 的XML文件中获取信息。当服务器响应就绪时,myFunction()
函数会解析XML并构建一个包含CD信息的HTML表格,最终更新具有 "demo" ID 的元素。onkeyup
事件触发。
str.length == 0
)。如果是,清除 txtHint
占位符的内容并退出函数。
XMLHttpRequest
对象q
参数 gethint.php?q="+str
str
变量保存输入字段的内容PHP 文件 - "gethint.php"
onkeyup
事件触发。
str.length == 0
)。如果是,清除 txtHint
占位符的内容并退出函数。
XMLHttpRequest
对象q
参数 gethint.asp?q="+str
str
变量保存输入字段的内容ASP 文件 - "gethint.asp"
0 then
hint=""
for i=1 to 30
if q=ucase(mid(a(i),1,len(q))) then
if hint="" then
hint=a(i)
else
hint=hint & " , " & a(i)
end if
end if
next
end if
' 如果没有找到提示,则输出 "no suggestion",否则输出正确的值
if hint="" then
response.write("no suggestion")
else
response.write(hint)
end if
%>
function showCustomer(str) {
var xhttp;
if (str == "") {
document.getElementById("txtHint").innerHTML = "";
return;
}
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("txtHint").innerHTML = this.responseText;
}
};
xhttp.open("GET", "getcustomer.php?q="+str, true);
xhttp.send();
}
showCustomer()
函数执行以下操作:
XMLHttpRequest
对象q
)添加到 URL(带有下拉列表的内容)AJAX 服务器页面 - "getcustomer.php"
connect_error) {
exit('Could not connect');
}
$sql = "SELECT customerid, companyname, contactname, address, city, postalcode, country
FROM customers WHERE customerid = ?";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("s", $_GET['q']);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($cid, $cname, $name, $adr, $city, $pcode, $country);
$stmt->fetch();
$stmt->close();
echo "
";
echo "
";
?>
";
echo " ";
echo "CustomerID ";
echo "" . $cid . " ";
echo "CompanyName ";
echo "" . $cname . " ";
echo "ContactName ";
echo "" . $name . " ";
echo "Address ";
echo "" . $adr . " ";
echo "City ";
echo "" . $city . " ";
echo "PostalCode ";
echo "" . $pcode . " ";
echo "Country ";
echo "" . $country . " ";
echo "在HTML表格中显示XML数据
元素,并在HTML表格中显示
和
元素的值:
在HTML div元素中显示第一个CD
在CD之间导航
next()
和previous()
函数:
点击CD时显示专辑信息
最后
Let us Coding
,关注后即可获取最新文章推送
参与评论
手机查看
返回顶部