AJAX简介与简单项目

1.AJAX简介

知识点:


a) 了解异步通信和同步通信的概念

b) 注意,如果需要提起多个请求,需要创建多个 XMLHttpRequest 对象 c) 掌握引擎的 5 种状态

d) 了解 XMLHttpRequest 对象的创建过程

e) 了解 XMLHttpRequest 对象中 open、onreadystatechange、readystate、responseText、status 属性和方法的含义

f)  使用 Ajax 技术需要清除缓存,否则容易产生莫名其妙的错误,具体有两种方法:


第 一 种 , 采 用 URL 后 跟 上 时 间 戳 来 防 止 浏 览 器 缓 存 , 如 :
user_validate.jsp?userId=" + userId + "&timestampt=" + new Date().getTime() 

第二种,加入清除缓存代码,如:

response.setContentType("text/xml");

response.setHeader("Cache-Control", "no-store"); //HTTP1.1 

response.setHeader("Pragma", "no-cache"); //HTTP1.0 

response.setDateHeader("Expires", 0);

用户代码是否重复采用 Ajax 验证流程

创建 Ajax 引擎对象 XMLHttpReqest

调用 open 方法与 Ajax 引擎建立连接,并告诉 Ajax 引擎我们的请求方式为 get,请 求 url 及采用异步方式

  告诉 Ajax 引擎处理完成后, 如何把结果反馈给我们, 我们通常指定一个方法句柄, 那么 Ajax 就会调用我们指定的方法,从而就可以得到 Ajax 引擎返回的数据(这种 方式一般称为回调机制)

最后调用 send 方法把我们步骤 b 和 c 设置的参数发送给 Ajax 引擎(也就是真正的交给 Ajax 引擎去处理)



AJAX引擎是内置在浏览器中的,所以使用的时候是浏览器直接和AJAX引擎打交道,引擎在和服务器打交道。
     
执行过程:浏览器将参数传递给AJAX引擎,AJAX引擎再将参数传递给服务器,服务器返回内容给AJAX引擎,AJAX引擎再返回给服务器





执行步骤:

1.创建AJAX核心对象XMLHttpRequest。这样做的目的是保证浏览器的兼容性

var xmlHttp;
	function createXMLHttpRequest() {
		//表示当前浏览器不是ie,如ns,firefox
		if(window.XMLHttpRequest) {
			xmlHttp = new XMLHttpRequest();
		} else if (window.ActiveXObject) {
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}


2.打开,设置参数(只是设置,set,并没有起作用)

参数:open(请求方式,url,同步还是异步);

	function validate(field){
		if(trim(field.value) != null){
			createXMLHttpRequest();
			//为了清除缓存"&time=" + new Date().getTime().,最好加上.
			var url = "user_validate.jsp?userId="+trim(field.value)+"&time=" + new Date().getTime();
			xmlHttp.open("GET",url,true);
			//设置回调函数,接收服务器返回的信息。
			xmlHttp.onreadystatechange=callback;
			//将设置信息发送到AJAX引擎
			xmlHttp.send(null);
		}
	}

3.回调函数

	function callback(){
		//4标识消息成功返回到AJAX引擎
		if(xmlHttp.readyState == 4){
			//200表示HTTP请求成功
			if(xmlHttp.status == 200){
				//responseText存储服务器传给引擎的值
				if(xmlHttp.responseText != null){
					document.getElementById("spanUserId").innerHTML="<font color='red'>" + xmlHttp.responseText + "</font>";
				//	alert(xmlHttp.responseText);
				}
			}else{
				alert("请求失败,错误码:"+xmlHttp.status);
			}
		}
	}







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经典案例,带数据库脚本、Java源文件和页面源文件。有演示效果,也可以自己部署看效果。以下是案例的目录。 1-1.EXE 动态加载的FAQ实例演示 1-2.EXE 根据邮政编码获取地区信息实例演示 1-3.EXE 动态树形列表实例演示 1-4.EXE 多级联动菜单实例演示 1-5.EXE 条件设置向导实例演示 1-6.EXE 页面关键词提示实例演示 2-1.EXE 无刷新显示回帖实例演示 2-2.EXE 输入内容前提示实例演示 2-3.EXE 带进度的文件上传实例演示 2-4.EXE 大量数据动态浏览查询实例演示 2-5.EXE 信息排序实例演示 2-6.EXE 切换标签页实例演示 3-1.EXE 注册表单验证实例演示 3-2.EXE 购物车实例演示 3-3.EXE 产品快速检索实例演示 3-4.EXE 系列产品特性速查实例演示 3-5.EXE 邮件订阅实例演示 3-6.EXE 产品评级实例演示 4-1.EXE 简单计算器实例演示 4-2.EXE 文章拼写检查实例演示 4-3.EXE 拼词游戏实例演示 4-4.EXE 在线词典实例演示 4-5.EXE 远程网页源代码读取实例演示 5-1.EXE 相册浏览实例演示 5-2.EXE 幻灯片实例演示 5-3.EXE 灯箱效果实例演示 5-4.EXE 聊天室实例演示 6-1.EXE 自动登录实例演示 6-2.EXE 自动保存草稿实例演示 6-3.EXE 实时更新的股价实例演示 6-4.EXE 提前加载分页文章实例演示 7-1.EXE 获取服务器当前时间实例演示 7-2.EXE 远程PING服务器实例演示 7-3.EXE 服务器监测系统实例演示 7-4.EXE 使用滑动栏设置参数实例演示 8-1.EXE RSS阅读器实例演示 8-2.EXE 天气情况查询实例演示 8-3.EXE 访问搜索服务实例演示 8-4.EXE 读取Amazon产品目录实例演示 9-1.EXE 名片册实例演示 9-2.EXE 自定义个人门户实例演示 9-3.EXE 个人任务管理实例演示 9-4.EXE 许愿墙实例演示 9-5.EXE 日程表实例演示 9-6.EXE 考试系统实例演示
一个基于 AJAX简单项目可以是一个 To-Do List 应用程序。以下是一个示例: HTML 文件: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>To-Do List</title> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="script.js"></script> </head> <body> <h1>To-Do List</h1> <input type="text" id="newTask"> <button id="addTask">Add Task</button> <ul id="taskList"></ul> </body> </html> ``` JavaScript 文件(script.js): ```javascript $(document).ready(function() { // 加载任务列表 loadTasks(); // 添加新任务 $('#addTask').click(function() { var task = $('#newTask').val(); addTask(task); }); // 删除任务 $(document).on('click', '.deleteTask', function() { var taskId = $(this).data('id'); deleteTask(taskId); }); }); function loadTasks() { $.ajax({ url: 'api.php?action=getTasks', type: 'GET', dataType: 'json', success: function(response) { $.each(response, function(index, task) { $('#taskList').append('<li>' + task.task + ' <button class="deleteTask" data-id="' + task.id + '">Delete</button></li>'); }); } }); } function addTask(task) { $.ajax({ url: 'api.php?action=addTask', type: 'POST', dataType: 'json', data: {task: task}, success: function(response) { $('#taskList').append('<li>' + task + ' <button class="deleteTask" data-id="' + response.id + '">Delete</button></li>'); $('#newTask').val(''); } }); } function deleteTask(taskId) { $.ajax({ url: 'api.php?action=deleteTask', type: 'POST', dataType: 'json', data: {id: taskId}, success: function(response) { $('button[data-id="' + taskId + '"]').parent().remove(); } }); } ``` PHP 文件(api.php): ```php <?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "database"; // 创建连接 $conn = new mysqli($servername, $username, $password, $dbname); // 检查连接是否成功 if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } // 处理 GET 请求 if ($_SERVER["REQUEST_METHOD"] == "GET") { if ($_GET["action"] == "getTasks") { // 获取任务列表 $sql = "SELECT * FROM tasks"; $result = $conn->query($sql); $tasks = array(); if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { $tasks[] = array('id' => $row["id"], 'task' => $row["task"]); } } echo json_encode($tasks); } } // 处理 POST 请求 if ($_SERVER["REQUEST_METHOD"] == "POST") { if ($_POST["action"] == "addTask") { // 添加新任务 $task = $_POST["task"]; $sql = "INSERT INTO tasks (task) VALUES ('$task')"; if ($conn->query($sql) === TRUE) { $id = mysqli_insert_id($conn); echo json_encode(array('id' => $id)); } else { echo json_encode(array('error' => $conn->error)); } } else if ($_POST["action"] == "deleteTask") { // 删除任务 $id = $_POST["id"]; $sql = "DELETE FROM tasks WHERE id=$id"; if ($conn->query($sql) === TRUE) { echo json_encode(array('success' => true)); } else { echo json_encode(array('error' => $conn->error)); } } } $conn->close(); ?> ``` 该项目使用 AJAX 与后端 PHP 文件进行通信。当用户在文本框中输入新任务并单击“添加任务”按钮时,JavaScript 函数 `addTask()` 发送一个 POST 请求到服务器,并将新任务添加到数据库中。当用户单击“删除”按钮时,JavaScript 函数 `deleteTask()` 发送一个 POST 请求到服务器,并从数据库中删除相应的任务。当页面加载时,JavaScript 函数 `loadTasks()` 发送一个 GET 请求到服务器,获取任务列表,并将每个任务添加到 HTML 中的无序列表中。 请注意,此示例仅供演示目的。在实际应用程序中,应考虑安全性和数据验证。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值