通过表单提交,很方便的可以从界面把参数传递给后台。

如果前后台我们有大量数据需要交互,JSON方便我们传递和读取。

如果需要更新一个界面的某一部分数据,并不想刷新界面,就要用到Ajax。

1. 表单脚本

1.1. 概述

在HTML中,表单是由<form>元素来表示的,在JavaScript中,表单对应的是HTMLFormElement类型,它继承了HTMLElement,因而与其他HTML元素具有相同的默认属性。其他特性和方法:

action:接收请求的URL;等价于HTML的action属性。

method:发送HTTP的请求类型(get、post),等价于HTM来的method属性。

name:表单名称;等价于HTML的name属性。

reset();所有表单重置为默认值;

submit():提交表单。

target:发送请求与接收相应的窗口名称;等价于HTML的target属性。

1.2. 提交表单

  • 使用<input>或<button>,把type属性设置为”submit”,就可以定义提交按钮。(reset属性用来重置)如:

<input type=”submit” value=”balala”>

<button type=”submit”>balala</button>

<input type=”image” src=”graphic.gif”>

  • 在javascript中,提交表单使用submit()方法(reset()方法用来重置),表单无需包含提交按钮:如:

var form=document.getElementById(“myForm”);

form.submit();

  • 为防止重复提交,往往需要在第一次提交表单后就禁用提交按钮,或者利用onsubmit事件处理程序取消后续的表单提交操作。
  • 每个表单都有elements属性,该属性是表单中所有元素的集合。该集合是个有序列表,包含着表单中的所有字段(<input>、<textarea>、<button>等),可以按照位置和name属性来访问。如果多个表单控件都使用一个name,那么就返回以name命名的一个NodeList。
  • <input>、<button>等表单元素共有的属性如下:

    disabled、name、readOnly、type(字段类型,如checkbox、radio)、value(被提交给服务器的值)。

  • 表单字段的大部分都有type属性。<input>元素的type属性在html中定义,其他元素的type属性值如下:

  • 每个表单字段都有两个方法:focus()(聚焦)、blur()(移焦)。
  • 表单字段都支持的事件:blur、change、focus。
  • 通常,可以使用focus和blur来向用户给出视觉提示,change常用于验证用户在字段中输入的数据。

1.3. 文本框脚本

a) 两种:<input>,<textarea>。

b) <input>的type设置为”text”。size属性可设置能够显示的字符数,maxlength指定文本框可以接受的最大字符数。

c) <textarea>呈现为多行文本框。rows、cols设置文本框大小。

d) <textarea>初始值必须放在<textarea></textarea>之间,且不能指定最大字符数。

e) 调用select()方法可以将焦点放到文本框上。

1.4. 表单序列化

a) 浏览器发送数据到服务器的步骤:

2. JSON(JavaScript Object Notation,JavaScript对象表示法)

并不是只有JavaScript使用JSON,JSON只是一种数据格式。

2.1  JSON三种数据格式

简单值、对象、数组。

a) 简单值:5,“Hello World!”等。JSON字符串必须使用双引号,不能用单引号。

b) 对象:{“name”:”某某某”,“age”:29},JSON没有申明变量,末尾没有分号,对象属性必须加双引号。属性值可以是复杂类型:

c) 数组:[25,”hi”,true]。把数组和对象结合起来,可以构成更复杂的数据集合。

2.2. 解析和序列化

a) 可以把JSON数据解析为有用的JavaScript对象。

b) eval()函数可以解析、解释并返回JavaScript对象和数组。

c) JSON对象有两个方法:

  1. JSON.stringify():把JavaScript对象序列化为Json字符串;
  2. JSON.parse():把JSON字符串解析为原生JavaScript值。
  3. 有时候JSON.stringify()返回的字符串还要作处理,这时,可以给JSON对象定义toJSON()方法,返回自身的JSON格式。(相当于覆盖toJSON(),类似于Java的覆盖toString();
  4. JSON.parse的第二个参数是个函数:

3. Ajax(Asynchronous JavaScript+XML)

3.1.  概述

a)  Ajax技术的核心是XMLHttpRequest对象,能够向服务器请求额外的数据而无需重新刷新界面。

b)  使用xhr.open()发送请求的三个参数:请求类型(get、post),请求URL,是否异步。调用open()是启动一个请求以备发送,再调用send()正式发送。

3.2. Xhr的属性说明

发送请求收到响应后,响应数据会自动填充xhr的各个属性:

a)  responseText:作为响应主体被返回的文本。

b)  responseXML:如果响应的内容类型为“text/xml”或“application/xml”,这个属性会保存响应数据的XML DOM文档。

c)  status:响应的HTTP状态。

d)  statusText:HTTP状态的说明。

3.3. readyState属性

异步请求中,可以检测XHR对象的readyState属性(请求/响应过程的当前活动阶段)

0:未初始化(尚未调用open()).

1:启动(已经调用open(),尚未调用send()).

2:发送(已经调用send(),但未收到响应)。

3:接收(已经收到部分响应数据)

4:完成:已经收到全部响应数据,可以在客户端使用。

3.4.    XHR举例:

var xhr = createXHR();       

xhr.open("get", "example.txt", false);

xhr.send(null);

if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304){

         alert(xhr.statusText);

         alert(xhr.responseText);

 } else {

        alert("Request was unsuccessful: " + xhr.status);

 }

3.5.    其他说明:

  1. 每个HTTP请求和响应都会带有相应的头部信息。
  2. GET请求用于向服务器查询某些信息,必要时将查询字符串参数追加到URL末尾。
  3. POST请求用于向服务器发送应该被保存的数据,把数据作为请求的主体提交。

javascript笔记8-表单脚本、JSON、AJAX的更多相关文章

  1. 《JavaScript高级程序设计》笔记:表单脚本(十四)

    表单的基础知识 在HTML中,表单是由<form>元素来表示的,而在JS中,表单对应的是HTMLFormElement类型.HTMLFormElement继承了HTMLElement,因而 ...

  2. JavaScript高级程序设计--表单脚本

    1.提交表单 submit onsubmit   2.表单的change事件 input与textarea元素的change事件触发在,他们失去焦点且value值改变的时候 select的change ...

  3. JS学习笔记7_表单脚本

    1.获取表单及表单元素引用的方式 var mForm = document.forms[formName];获取表单引用 mForm.elements[elemName]获取表单元素,如有同名的,则得 ...

  4. JavaScript高级程序设计第14章表单脚本 (学习笔记)

    第十四章 表单脚本 1.阻止默认表单提交 1.提交表单数据 1.使用type=submit提交按钮 2.使用submit():方法 注意:当用户点击提交按钮时,会触发submit事件,从而在这里我们有 ...

  5. JavaScript基础笔记(十)表单脚本

    表单脚本 一.表单基础知识 JavaScript中表单对应的是HTMLFormElement类型,该类型继承自HTMLElement类型. 通过document.forms可以获得所有表单元素,通过数 ...

  6. (笔记)JQuery扩展方法实现Form表单与Json互相转换

    JQuery笔记 记两段代码,使用JQuery实现从表单获取json与后端交互,以及把后端返回的json映射到表单相应的字段上. 把表单转换出json对象 //把表单转换出json对象 $.fn.to ...

  7. 第一百五十九节,封装库--JavaScript,表单序列化结合ajax提交数据

    封装库--JavaScript,表单序列化结合ajax提交数据 封装库,表单序列化方法 /** xu_lie_biao_dan()方法,表单序列化方法,将自动获取指定表单里面的各项字段name值和va ...

  8. javascript权威指南第14章 表单脚本示例代码

    HTML部分 <!DOCTYPE html> <html> <head> <title></title> </head> < ...

  9. 使用ajax提交form表单,包括ajax文件上传【转载】

    [使用ajax提交form表单,包括ajax文件上传] 前言 转载:作者:https://www.cnblogs.com/zhuxiaojie/p/4783939.html 使用ajax请求数据,很多 ...

  10. SpringMVC学习笔记:表单提交 参数的接收

    SpringMVC可以接收原生form表单和json格式数据 有一个名为Book的model,其中的属性如下: 字符串类型的name,数字类型的price,数组类型的cover,集合类型的author ...

随机推荐

  1. css3实现轮播

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. RegExp类型,单体内置对象

    1.RegExp类型:  1)什么是正则表达式:RegExp    --是一种规则,模式    --强大的字符串匹配工具    --创建:    --使用RegExp构造函数创建:var re=new ...

  3. EntityFramework Core 学习笔记 —— 创建模型

    原文地址:https://docs.efproject.net/en/latest/modeling/index.html 前言: EntityFramework 使用一系列的约定来从我们的实体类细节 ...

  4. MySql_十六进制值

    十六进制值 MySQL支持十六进制值.在数字上下文中,十六进制数如同整数(64位精度).在字符串上下文,如同二进制字符串,每对十六进制数字被转换为一个字符: mysql> SELECT x'4D ...

  5. SSH服务器拒绝密码检测

    这两天在配置Ubuntu 14.04的环境时,碰到一个典型的问题:在用xshell 连接Ubuntu时,显示"SSH服务器拒绝密码检测"的问题,在经过一系列配置修改后,最终怀疑是否 ...

  6. iOS 键盘类型定制归纳

    一.键盘风格 支持8种风格键盘. typedef enum { UIKeyboardTypeDefault, // 默认键盘:支持所有字符 UIKeyboardTypeASCIICapable, // ...

  7. Android:Butter Knife 8.0.1配置

    github地址:https://github.com/GarsonZhang/butterknife Butter Knife Field and method binding for Androi ...

  8. Displaying Window In Center In Oracle Forms 6i

    Center window automatically  in Oracle Forms 6i, use the following procedure by passing window name ...

  9. 没有技术说明文档的开源都是耍流氓:微软Roslyn编译即服务在CIIP中具体应用(上)

    前段时间我发布了 github开源:企业级应用快速开发框架CIIP WEB+WIN+移动端,很多园友们都表示支持并与我探讨相关技术问题,上篇中我也承诺会写相关的技术文章,本篇就来介绍一下建模模块中使用 ...

  10. 调度系统任务创建---创建一个MultiJob的任务(四)

    我们如果下面这种拓扑结构的调度任务,该任务的拓扑结构就是一个有向五环图DAG,有fork,有join的操作等. 可以通过jenkins创建MultiJob的任务实现: 实例任务的拓扑结构: Multi ...