当前位置: 首页 > news >正文

ajax如何提交多表单的值_Ajax完整详细教程(一)

Ajax 简介

Ajax 由 HTML、JavaScript™ 技术、DHTML 和 DOM 组成,这一杰出的方法可以将笨拙的 Web 界面转化成交互性的 Ajax 应用程序。它是一种构建网站的强大方法。

Ajax 尝试建立桌面应用程序的功能和交互性,与不断更新的 Web 应用程序之间的桥梁。可以使用像桌面应用程序中常见的动态用户界面和漂亮的控件,不过是在 Web 应用程序中。

Ajax 应用程序所用到的基本技术:

1、HTML 用于建立 Web 表单并确定应用程序其他部分使用的字段。

2、JavaScript 代码是运行 Ajax应用程序的核心代码,帮助改进与服务器应用程序的通信。

3、DHTML 或 Dynamic HTML,用于动态更新表单。我们将使用div、span 和其他动态 HTML 元素来标记 HTML。

4、文档对象模型 DOM 用于(通过 JavaScript 代码)处理HTML 结构和(某些情况下)服务器返回的 XML。

Ajax 的定义

Ajax= Asynchronous JavaScript and XML(以及 DHTML 等)Asynchronous异步JS和XML。

XMLHttpRequest这是一个 JavaScript 对象; 是处理所有服务器通信的对象,创建该对象很简单,如清单 1 所示。

清单 1. 创建新的 XMLHttpRequest 对象

通过 XMLHttpRequest 对象与服务器进行对话的是 JavaScript 技术。这不是一般的应用程序流,这恰恰是 Ajax的强大功能的来源。

1f4fe7635e504521a34ba0c5281e302d

Ajax 基本上就是把 JavaScript 技术和 XMLHttpRequest 对象放在 Web 表单和服务器之间。

69da266dfcc343ae8ddd268eae1ce491

得到 XMLHttpRequest 的句柄后,使用 JavaScript 代码完成以下任务:

1、获取表单数据:JavaScript 代码很容易从 HTML 表单中抽取数据并发送到服务器。

2、修改表单上的数据:更新表单也很简单,从设置字段值到迅速替换图像。

3、解析 HTML 和 XML:使用 JavaScript 代码操纵 DOM(请参阅 下一节),处理 HTML 表单服务器返回的 XML数据的结构

对于前两点,需要非常熟悉 getElementById() 方法,如 清单 2 所示。

清单 2. 用 JavaScript 代码捕获和设置字段值

//捕获字段值:

// 获得字段"phone"的值并用其创建一个变量phone

var phone = document.getElementById("phone").value;

//设置字段值:

// 从response的数组中获得值并将其写到标签中

document.getElementById("order").value = response[0];

document.getElementById("address").value = response[1];

DOM的功能

当需要在 JavaScript 代码和服务器之间传递 XML 和改变 HTML 表单的时候,我们再深入研究 DOM。

获取 Request 对象

XMLHttpRequest 是 Ajax 应用程序的核心.

var xmlhttp;

if (window.XMLHttpRequest)

{// 从 IE7+, Firefox, Chrome, Opera, Safari 中获得XMLHttpRequest对象

xmlhttp=new XMLHttpRequest();

}

else

{//从 IE6, IE5 中获得XMLHttpRequest对象

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

}

清单 4. 以支持多种浏览器的方式创建 XMLHttpRequest 对象

/* Create a new XMLHttpRequest object to talk to the Web server */

var xmlHttp = false;

/*@cc_on @*/

/*@if (@_jscript_version >= 5)

try {

xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");

} catch (e) {

try {

xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

} catch (e2) {

xmlHttp = false;

}

}

@end @*/

if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {

xmlHttp = new XMLHttpRequest();

}

这段代码的核心分为三步:

1、建立一个变量 xmlHttp 来引用即将创建的 XMLHttpRequest 对象。

2、尝试在 Microsoft 浏览器中创建该对象:

1)尝试使用 Msxml2.XMLHTTP 对象创建它。

如果失败,再尝试 Microsoft.XMLHTTP 对象。

3、如果仍然没有建立 xmlHttp,则以非 Microsoft 的方式创建该对象。 最后,xmlHttp 应该引用一个有效的XMLHttpRequest 对象,无论运行什么样的浏览器。

Ajax 的请求/响应

与服务器上的 Web 应用程序打交道的是 JavaScript 技术,而不是直接提交给那个应用程序的 HTML 表单。

发出请求

如何使用XMLHttpRequest 对象?

首先–需要一个能够调用JavaScript 方法 的Web 页面 。

接下来就是在所有 Ajax 应用程序中基本都雷同的流程:

1、从 Web 表单中获取需要的数据。

2、建立要连接的 URL。

3、打开到服务器的连接。

4、设置服务器在完成后要运行的函数。

5、发送请求。

清单 5 中的示例 Ajax 方法就是按照这个顺序组织的:

清单 5. 发出 Ajax 请求

function callServer() {

// 获得city和state的值

var city = document.getElementById("city").value;

var state = document.getElementById("state").value;

// 当它们的值任一个不存在的时候结束JS

if ((city == null) || (city == "")) return;

if ((state == null) || (state == "")) return;

// 创建连接的URL对象

var url = "/scripts/getZipCode.php?city=" + escape(city) + "&state=" + escape(state);

// 打开一个连接服务器的连接

xmlHttp.open("GET

相关文章:

  • 五金手册钢材理论重量计算小程序_33个造价实用小工具,工作效率提高80%,造价人的终极神器,手慢无...
  • 什么是常驻内存式的开发模式?_为什么 APP 纷纷开发“暗黑模式”?优酷最佳实践总结...
  • mysql blob类型_MySQL数据类型 字符串数据类型(1)
  • php 多层循环多数据_php程序内存优化之数组操作优化
  • python倒背如流_如何系统地自学 Python?
  • git desktop发布到gitee_MAC系统下利用gitee和Hexo建个人网站-各种坑各种填
  • python面试题与知识点_python技术面试题(一)
  • css覆盖规则_CSS元素选择器是怎样运作的?
  • bagging和时间序列预测_时间序列预测与指数平滑法
  • python领域驱动_浅谈“领域驱动设计”
  • http status 404 – 未找到_[SEO名词]网站404页面是什么?
  • pythonsqlite锁定_python – 可以在NFS文件系统上锁定sqlite文件吗?
  • python如何调用matlab_[Python-MATLAB] 在Python中调用MATLAB的API
  • 语料库与python应用_语料库与Python应用/语料库翻译学文库
  • 多个id如何用js_将多个MSA连超级高铁网络,如何用最少的轨道连接所有MSA?
  • 时间复杂度分析经典问题——最大子序列和
  • 【知识碎片】第三方登录弹窗效果
  • Angular 响应式表单之下拉框
  • Apache的基本使用
  • CSS盒模型深入
  • es的写入过程
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • passportjs 源码分析
  • Spring声明式事务管理之一:五大属性分析
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • web标准化(下)
  • Xmanager 远程桌面 CentOS 7
  • 测试如何在敏捷团队中工作?
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 经典排序算法及其 Java 实现
  • 入口文件开始,分析Vue源码实现
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 思维导图—你不知道的JavaScript中卷
  • NLPIR智能语义技术让大数据挖掘更简单
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • (3)选择元素——(17)练习(Exercises)
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (附源码)php新闻发布平台 毕业设计 141646
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (规划)24届春招和25届暑假实习路线准备规划
  • (一)为什么要选择C++
  • .NET Core 成都线下面基会拉开序幕
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)
  • @FeignClient注解,fallback和fallbackFactory
  • [ C++ ] template 模板进阶 (特化,分离编译)
  • [acm算法学习] 后缀数组SA
  • [Android]How to use FFmpeg to decode Android f...
  • [C++] Boost智能指针——boost::scoped_ptr(使用及原理分析)
  • [exgcd] Jzoj P1158 荒岛野人
  • [Go WebSocket] 多房间的聊天室(五)用多个小锁代替大锁,提高效率
  • [Hadoop in China 2011] 蒋建平:探秘基于Hadoop的华为共有云
  • [HDU3710]Battle over Cities