大概入了JavaScript的门,现在要回过头恶补Ajax和json了,随手翻到dom编程艺术发现有一个适合回忆的例子,先抄录下来,引入对Ajax作用的大概印象,再去掰开了研究。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Page Title</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" media="screen" href="main.css" />
</head>
<body>
<form method="POST" action="submit.html">
<fieldset>
<div>
<label for="name">用户名:</label>
<input type="text" id="name" name="name">
</div>
<div>
<label for="password">密码:&nbsp;&nbsp;&nbsp;</label>
<input type="password" id="password" name="password">
</div>
<button type="submit" id="send">提交</button>
<button type="reset">重置</button>
</fieldset>
</form>
<p id="holder"></p>
<script async>
function submitWithAjax(){
var form1 = document.getElementsByTagName("form")[0];//获取第一个表单元素
var request = new XMLHttpRequest();//创建一个XHR对象,就不兼容IE了哈
var dataParts = [];//创建存储数据的数组
var element;
var holder = document.getElementById("holder");
// console.log(form1.elements.length);fieldset也算一个
for(var i = 0;i<form1.elements.length;i++){
element = form1.elements[i];
dataParts[i] = element.name + '=' + encodeURIComponent(element.value);
        //收集名字和其编码后的值,保存起来
}
console.log(dataParts);
var data = dataParts.join("&");//把要发送的数据用&连接起来
// console.log(data);
request.open("POST",form1.getAttribute("action"),true);//使用POST请求
request.setRequestHeader('Content-type',"application/x-www-form-urlencoded");//必需,表明请求中包含URL编码的表单
request.onreadystatechanged = function(){
if(request.readyState == 4){
if(request.status == 200 || request.status == 0){
var matches = request.responseText.match(/<p>([\s\S]+)<\/p>/);
//match方法以正则表达式为参数,返回包含各种匹配结果的数组
//match[0]是responseText中与整个模式匹配的部分,即包括<p>,</p>在内的部分,
// 而[1]是其内部的部分(与捕获组中的模式匹配的部分)
if(matches.length > 0){//捕获(匹配)成功
holder.innerHTML = matches[1];
}else{
holder.innerHTML = "<p>出错了!</p>";
}
}else{
holder.innerHTML = "<p>"+request.responseText+"</p>";
}
}
};
request.send(data);
};
var send = document.getElementById("send");
window.onload= submitWithAjax;
// form1.onsubmit = function(){
// if(submitwithajax()) return false;} </script>
</body>
</html>

DOM编程艺术章12:一个简单的Ajax例子的更多相关文章

  1. dom编程艺术章12

    function addLoadEvent(func){//添加事件函数 var oldonload = window.onload; if(typeof window.onload != 'func ...

  2. struts2框架下的一个简单的ajax例子

    举个例子 jsp页面: <%@ page language="java" import="java.util.*" pageEncoding=" ...

  3. JavaScript DOM编程艺术(第2版)的简单总结

    介绍 JavaScript DOM编程艺术(第2版)主要讲述了 JavaScript.DOM 和 HTML5 的基础知识,着重讲述了 DOM 编程,并通过几个实例演示了具有专业水准的网页开发. 下面介 ...

  4. JavaScript DOM编程艺术第一章:JavaScript简史

    本系列的博客是由本人在阅读<JavaScript DOM编程艺术>一书过程中做的总结.前面的偏理论部分都是书中原话,觉得有必要记录下来,方便自己翻阅,也希望能为读到本博客的人提供一些帮助, ...

  5. 《JavaScript Dom 编程艺术》读书笔记-第4章

    我的前端入门第一本书是<JavaScript Dom 编程艺术>,网上查找资料发现前端的入门推荐书籍最受好评的就是这本和<JavaScript 高级程序设计>了.之所以先选这本 ...

  6. 《javascript dom编程艺术》笔记(一)——优雅降级、向后兼容、多个函数绑定onload函数

    刚刚开始自学前端,如果不对请指正:欢迎各位技术大牛指点. 开始学习<javascript dom编程艺术>,整理一下学习到的知识.今天刚刚看到第六章,记下get到的几个知识点. 优雅降级 ...

  7. Javascript DOM 编程艺术(第二版)读书笔记——基本语法

    Javascript DOM 编程艺术(第二版),英Jeremy Keith.加Jeffrey Sambells著,杨涛.王建桥等译,人民邮电出版社. 学到这的时候,我发现一个问题:学习过程中,相当一 ...

  8. 读书笔记:JavaScript DOM 编程艺术(第二版)

    读完还是能学到很多的基础知识,这里记录下,方便回顾与及时查阅. 内容也有自己的一些补充. JavaScript DOM 编程艺术(第二版) 1.JavaScript简史 JavaScript由Nets ...

  9. JavaScript DOM 编程艺术·setInterval与setTimeout的动画实现解析

    先贴上moveElement()函数的大纲,为了方便观看,删了部分代码,完整版粘到文章后面. function moveElement(elementID,final_x,final_y,interv ...

随机推荐

  1. 一个简单的定向python爬虫爬取指定页面的jpg图片

    import requests as r import re resul=r.get("http://www.imooc.com/course/list") urlinfo=re. ...

  2. 使用gulp和browser-sync实现浏览器自动刷新

    安装gulp (前提是已经安装了node) 全局安装: npm install -g gulp 本项目安装: npm install gulp --save-dev 安装browser-sync 全局 ...

  3. 添加本地jar包到maven仓库

    mvn install:install-file -Dfile=D:\video-lib\log4j-.jar -DgroupId=video -DartifactId=log4j -Dversion ...

  4. win10下 git运行出现 fatal: open /dev/null or dup failed: No such file or directory

    在C:\Window\System32 位置,找到cmd,以管理员运行cmd,输入 sfc/scannow命令,进行修复操作.然后重启就可以用了

  5. 听说https更安全

    0--介绍: 现在人们对网络的依赖越来越重,那么对于网络安全的要求也越来越高,传统的http协议实现了网络中的快速传输,完整传输,保证了信息的完整性,但是对于网络的安全性却没有那么强,很容易被人劫持, ...

  6. 简单git使用命令

    // 查看分支:git branch // 创建分支:git branch <name> // 切换分支:git checkout <name> // 创建+切换分支:git ...

  7. 快速搞定Word,提高你的工作效率

    调整字体大小快捷键   ctrl+中括号  []分别减小字体加大字体 取消显示回车符号  文件->选项->显示->取消段落标记 对比两列内容是否相同    在第三列输入以下公式=IF ...

  8. docker 创建docker用户组,应用用户加入用户组

    在Linux系统下使用docker,为了避免每次输入命令都需要sudo,可以把用户加入docker用户组 创建docker用户组 sudo groupadd docker 普通用户加入docker用户 ...

  9. jupyter notebook快捷键使用指南

    Jupyter Notebook 是一个交互式笔记本程序, 其有丰富的快捷键来便捷的完成工作.Notebook 有两种键盘输入模式.即命令模式和编辑模式,这与 Vim 有些类似.在编辑模式下,可以往单 ...

  10. 环境搭建--使用pytharm远程调试树莓派

    对于Linux和文本编辑器不那么熟悉的小伙伴来说,直接在树莓派中写程序可谓是痛苦万分.本文将介绍如何使用PyCharm远程调试树莓派,并同步当前python文件到树莓派中. 配置环境 首先要在个人电脑 ...