原生AJAX与json、jsonp

本文深入探讨了AJAX的工作原理,包括其与XMLHttpRequest对象的交互,GET与POST请求的区别,以及JSON数据格式的解析与转换。同时,介绍了JSONP解决跨域请求问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(一)AJAX(Asynchronous JavaScript And XML[JSON]),阿贾克斯.异步的javascript和xmlXML 被设计用来传输和存储数据。(标记语言)

为什么要使用AJAX 

更自然、流畅的用户体验,对用户的操作即时响应

在不中断用户操作的情况下与Web服务器进行通信

更灵敏的响应用户访问,实现近似于桌面应用程序的交互效果

通过局部更新页面降低网络流量,提高网络的使用效率

实现动态局部刷新

 

(二)http请求

http请求:

1、建立一个TCP连接

2、web浏览器向web服务器发送请求命令

3、web浏览器发送请求头信息

4、web服务器应答

5、web服务器应答头信息

6、web服务器向浏览器发送数据信息

7、web服务器关闭TCP连接

一个HTTP请求一般由四部分组成

1、HTTP请求的方法或动作,是get请求还是post请求

2、请求的URL,请求地址

3、请求头,包含一些客户端信息,身份验证信息等

4、请求体,请求正文,请求正文包括客户端提交的查询信息,存储信息,表单验证信息等 一般请求头和请求体之间有一个空行,表示请求头的结束

http响应:

一个HTTP响应一般由三部分组成

1、一个由数字和文字组成的状态码,用来显示请求成功还是失败

2、响应头,包含一些服务器端信息,服务器类型、日期、时间等等

3、响应体,响应正文

 

(三)get请求和post请求的区别

一、根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。一般不会对服务器端的数据产生副作用 幂等的意味着对同一URL的多个请求应该返回同样的结果 根据HTTP规范,POST表示可能修改变服务器上的资源的请求。

二、.GET请求的数据会附在URL之后,POST把提交的数据则放置在是HTTP包的包体中。get不安全,post请求会相对安全,get对所有人可见。

三、get请求提交的数据比较小,post大一些,get方式提交的数据最多是1024kb,post提交的数据理论上没有限制。

四、在表单当中,Method默认为“get”,实际上,get和post只是发送机制不同,并不是一个取一个发

 

(四)XMLHttpRequest对象

        XMLHttpRequest可以在不向服务器提交整个页面的情况下,实现局部更新网页。当页面全部加载完毕后,客户端通过该对象向服务器请求数据,服务器端接受数据并处理后,向客户端反馈数据。XMLHttpRequest 对象提供了对 HTTP 协议的完全的访问,包括做出 POST 和 HEAD 请求以及普通的 GET 请求的能力 .

(五)原生AJAX的写法:

1、创建XMLHttpRequest对象     var request = new XMLHttpRequest();

2、设置请求参数     request.open("get", "http://10.0.152.17/AJAX/ajaxtest", true);

3、设置响应函数     request.onreadystatechange = function(){

    if(request.readyState == 4) {

        alert(request.responseText);   

}    

} 4、发送请求     request.send(string);

5、接收响应     request.responseText或者request.responseXML

 

(六)JSON的具体形式

JSON语法是一种用于传输和生成数据的协定,很类似于C家族的语言,所以很容易被C家族的语言所解析。

对象:对象包含在{}之间

属性:采用Key-Value对来表示。属性之间使用逗号分开。  string : value

数组:数组存放在[]之间   [ elements ]

元素:元素之间用逗号分开

值:值可以是字符串,数字,对象,数组,true,false,null

 

(七)JSON数据的转换 

eval(string)

作用:

          eval() 函数可计算某个字符串,并执行其中的 JavaScript 代码。

          即这个函数可以把一个字符串当作一个JavaScript表达式一样去执行它

语法:eval(string)

          参数string必需。要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。

            如:服务器端返回一个JSON字符串,需要用eval把它转换为对象。或者数组。eval("("+json字符串+")");

返回值:

      通过计算 string 得到的值(如果有的话),即参数string有返回值,则eval的执行结果就有返回值

使用JSON作为数据传输格式,eval来做计算转换(JSON.parse())

 

(八)什么是JSONP

Ajax直接请求普通文件存在跨域无权限访问的问题,甭管你是静态页面、动态网页、web服务、WCF,只要是跨域请求,一律不准;

Web页面上调用js文件时则不受是否跨域的影响(不仅如此,我们还发现凡是拥有”src”这个属性的标签都拥有跨域的能力,比如<script>、<img>、<iframe>);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值