Asynchronous javascript and xml

Ajax的实现 : 基于一个对象XMLHttpRequest (如何获取?)

步骤: 1. 获取ajax对象

function getRequestObject() {

if (window.XMLHttpRequest) {

// 支持Opera, Safari, Mozilla, Chrome,Internet Explorer 7, and IE 8.

return(new XMLHttpRequest());

} else if (window.ActiveXObject) {

//支持IE5.5或IE6

return(new ActiveXObject("Microsoft.XMLHTTP"));

} else {

//其他低版本或者更老的浏览器不支持

return(null);

}

}

2. 发送请求

function sendRequest() {

var request = getRequestObject();

//   请求方式/请求的资源/是否异步

request.open("GET", "message-data.html", true);

//get请求send的参数为null,为啥?

request.send(null);

//服务器响应请求以后执行的代码

request.onreadystatechange = function() {

handleResponse(request)

};

}

Post请求如何发送?

request.open("POST", url, true);

request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");   //发送HTTP请求头

request.send(data);  //例如传入”a=6&b=8”,后台可用request.getparameter(“a”)获取

3. 响应处理

function handleResponse(request) {

// 4表示服务器成功完成响应(总共5种状态:0,1,2,3,4)

if (request.readyState == 4 && request.status==200) {

alert(request.responseText);  //responseXML

}

}

JQ中的ajax函数应用

$.ajax({

 // 请求路径, string类型 , 默认为当前页面

url :  "address",

// 请求方式(post或get)默认为get, 注意其他http请求方法,例如put和delete也可以使用,但仅部分浏览器支持

type : ”GET”,

 //发送到服务器的数据, 要求为Object或String类型的参数。如果已经不是字符串,将自动转换为字符串格式。get请求中将附加在url后。对象必须为key/value格式,例如{foo1:"bar1",foo2:"bar2"}转换为foo1=bar1&foo2=bar2。如果是数组,JQuery将自动为不同值对应同一个名称。例如{foo:["bar1","bar2"]}转换为&foo=bar1&foo=bar2。

data :  { param1 : "Java", param2 : "PHP“ },

 //要求为String类型的参数,预期服务器返回的数据类型。如果不指定,JQuery将自动根据http返回responseXML或responseText,并作为回调函数参数传递。可用的类型如下:   xml:返回XML文档,可用JQuery处理。   html:返回纯文本HTML信息。   script:返回纯文本JavaScript代码。   json:返回JSON数据。   jsonp:JSONP格式。使用SONP形式调用函数时,例如myurl?callback=?,JQuery将自动替换后一个“?”为正确的函数名,以执行回调函数。   text:返回纯文本字符串。

dataType : "json",

//要求为Function类型的参数,请求成功后调用的回调函数         (1)由服务器返回,并根据dataType参数进行处理后的数据。         (2)描述状态的字符串。         function(data){            //data可能是xmlDoc、jsonObj、html、text等等         }

success : successHandlerFunction,

error : errorHandlerFunction,

//要求为Boolean类型的参数,默认为true,设置为false将不会从浏览器缓存中加载请求信息。

cache : false,

})

$.getJSON( “doFindPageObjects.do”, {pageCurrent:1} , function(result) {

//处理返回结果

})

$.post("doFindPageObjects.do", {pageCurrent:1} , function(result) {

//处理返回结果

})

ajax的优点:

1、最大的优点就是页面无刷新,用户的体验非常好。

2、使用异步方式与服务器通信,具有更加迅速的响应能力。

3、可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器和带宽的负担,节约空间和宽带租用成本。并且减轻服务器的负担,ajax的原则是“按需取数据”,可以最大程度的减少冗余请求,和响应对服务器造成的负担。

4、基于标准化的并被广泛支持的技术,不需要下载插件或者小程序。

5、ajax可使因特网应用程序更小、更快,更友好。

ajax的缺点:

1、ajax不支持浏览器back按钮。

2、安全问题 AJAX暴露了与服务器交互的细节。

3、对搜索引擎的支持比较弱。

4、破坏了程序的异常机制。

5、不容易调试。

ajax datatype_Ajax的基本使用相关推荐

  1. html+spring boot简单的ajax数据传输实现

    本篇讲解在前后端不分离情况下的html+spring boot的项目数据传输实现 首先,后台我写了三个接口 package com.demo.ajax.controller;import com.de ...

  2. form表单提交前进行ajax或js验证,校验不通过不提交

    在使用form表单进行提交数据前,需要进行数据的校验->表单的校验(如:两次密码输入是否相同)+后台数据的校验(如:账号是否存在),这个时候,如果哪步校验不通过,表单将停止提交,同时避免后台主键 ...

  3. 使用ajax不刷新页面获取、操作数据

    在使用jsp或html时,利用ajax达到不刷新页面就可以获取.操作数据. 首先上代码 (html+js) 在此处需要引入jquery插件 <!-- 这是页面部分 html--> < ...

  4. Ajax接收Java异常_java – 处理来自Servlet的Jquery AJAX响应中的异常

    我的servlet代码是 try{ //something response.setStatus(201); out.print("Data successfully saved" ...

  5. 【AJAX】JavaScript的面向对象

    Ajax中后端数据返回后需要前端通过JavaScript来实现动态数据更新的问题.所以,在Ajax中加深了一遍JavaScript面向对象的印象. 基础部分: JavaScript中创建对象并简单对象 ...

  6. 【AJAX】Ajax学习总结

    AJAX是什么: 是Asynchronous(异步).JavaScript.And.Xml 的缩写 主要就是说: 通过JavaScript融合了Web开发标准表示技术,DOM动态显示和交互,XML和X ...

  7. SpringMVC——通俗易懂讲讲Ajax~

    聊聊Ajax 一.什么是Ajax 二.iframe标签简单伪造Ajax 三.Ajax的实现 1. 基本概念的了解 Ajax的核心是什么? XMLHttpRequest是什么? Ajax数据传输的数据格 ...

  8. [JAVA EE]ajax 方式提交数据

    前端界面:Form表单 前端数据提交:使用 ajax 方式 ( 基于jquery ) 后台代码: TestController.java @Controller public class TestCo ...

  9. ajax交互扩展遇到的问题,ajax autocomplete扩展程序无法正常工作

    我在文本框上有一个自动填充扩展器,它将记录显示为数据库中的列表,但是我点击了texbox并开始输入任何内容.我的HTML代码是 Enabled="True" TargetContr ...

最新文章

  1. LeCun、河北大学校长康乐当选美国科学院院士,另有6位华人学者位列其中
  2. 远程计算机无法操作,Win10系统下qq远程不能控制对方电脑(点不动)的完全解决方法...
  3. 德国艺术家用99部手机成功在Google地图上制造交通阻塞
  4. LeetCode 3Sum
  5. pythonpandas设置索引_python – pandas:使用(row,col)索引设置值
  6. 《剑指offer》调整数组顺序使奇数位于偶数前面
  7. 后端技术:数据持久化框架为什么放弃 Hibernate、JPA、Mybatis,最终选择 JDBCTemplate!...
  8. python 多继承的问题
  9. HDU2502 月之数(解法三)【废除!!!】
  10. Page_Load基类,重写OnLoad
  11. 将SVG 转换为png -- ImageMagick 转换 svg 为透明png 图
  12. Ant design
  13. 从祖师级到新生代,48位开发者的“武功秘籍”
  14. PLS-00103: Encountered the symbol “DECLARE“
  15. NMOS和PMOS导通电流 走向
  16. c语言课程设计三色球问题,C++三色球问题描述与算法分析
  17. java 解析json字符串
  18. Docker容器无法启动,里面的配置文件如何修改
  19. 「硬见小百科」 常见电子元器件等效电路汇总
  20. A - Heavy Transportation POJ - 1797

热门文章

  1. java 不重启部署_一篇文章带你搞定SpringBoot不重启项目实现修改静态资源
  2. final 数组 java_Java Final数组列表
  3. 一份北大信科内部流传的 “CS 自救指南”
  4. 0基础讲解机器学习算法-朴素贝叶斯分类器
  5. UML是什么?UML常用图以及建模工具有哪些?
  6. Netty异步非阻塞事件驱动及原理详解
  7. 2020年考证时间表汇总!这些证书值得拥有!
  8. 解决AndroidStudio添加ProjectLibary后在编译时遇到的各种问题之解决方式索引(finished with non-zero exit value and so on...)
  9. 推荐系统中的Embedding
  10. Cannot re-initialize CUDA in forked subprocess. To use CUDA with multiprocessing, you