js中ajax(ei zhei ks)的request和response 与java servlet的request,response不一样,但又很像
js中的用var request =new XMLHttpRequest();就是提交表单数据的,可以请求或发送少量一部分数据,不用整个页面。
它使用SOAP或其它一些基于XML的web service接口
ajax也可以用于表单验证
ajax 主要是用了XMLHttpRequest对象实现了异步,ie6,5则是用ActiveXObject("Microsoft.XMLHTTP");
http是无状态的通信规则,状态码,响应头,响应体
request.open("get",service.php?number="");
request.send();向一个页面传送数据,然后判断状态码,看是否请求完成
request.onreadystatechange=function(){
if(request.readyState===4){
if(request.status===2000){
然后获取响应的数据request.responseText;
js 中get方法是直接把参数?放在url中传给一个页面,是查询,而post是把参数request.send(date),是保存数据;
在open和send之间一定要有request。setRequestHeader("Content-Type","application/x-www-form-urlencoded");发送表单数据
xhr.setRequestHeader("Content-type","application/json; charset=utf-8");发送json数据
不指定Content-type时,此是默认值值,xhr.setRequestHeader("Content-type", "text/plain; charset=utf-8");纯文本
xhr.setRequestHeader("Content-type", "text/html; charset=utf-8");html文本
json 是独立语言的,任何语言都可以用它
json值可以是数字,字符串,逻辑值boolean,数组[],对象{},null
{
"staff":[
{"name":"jjj",age:13},
{ }
]
}
解析json(eval方式),var jsonobj=eval('('+jsondata+')');alert(jsonobj.staff[0].name);该方式不光解析,还执行字符串的方法,如alert(‘jj’);
JSON.parse(jsondate);第二种方式;该方式会检测出alert不合法
JSONLint json格式校验工具;
{”success":true, //是否请求成功
"msg":"xxx", //请求错误返回的信息
"date":"xxx" //请求成功返回的数据
}
Jquery (ajax)
$(document).ready(function(){}相比onload不需等图片啊之类的加载出来,DOM结构绘制完毕后就执行,而且可以多次加载
可以简写$(function(){});但有时候,需要点击某个图片还没加载出来,会出现意外情况,此时,就得$(window).load(function(){
带$都是jquery方法
.click(function(){
$.ajax({
type:"GET",
url:"service.php?number="+$("#keyword").val(),
dataType:"json",
success:function(data//即request.responseText){if(data.success){}},
error:function(jqXHR){alert(jqXHR.status}
});
在jquery中是html();js是innerHTML();传参数是设置,不传参数是获取;
http:// www . baidu.com : 8080 / scripts/jquery.js
协议 子域名 主域名 端口号 请求资源地址
端口号后面不同不影响,是同域,端口号不同就是跨域了。这个网址请求另一个端口号不同的网址就叫跨域请求
localhost和127.0.0.1之间也叫跨域,js不允许跨域前端请求后端资源;
代理处理跨域,北京的在后端代理请求上海的,然后在返回给北京的前端;
jsonp处理跨域(支持get,不支持post):定义两个<script src="本地“ > <script src="http://www.bb.com.jsonp.js">在同一页面就可以了,
dataType:“jsonp",改一下,加一个jsonp:"callback",然后在后台get”callback“
h5提供的XHR2(IE10以下不支持)
在服务端加header('Access-Control-Allow-Origin:要访问的域名’);
header('Access-Control-Allow-Methods:Post,Get');
IE自己实现跨域的方式:
也是添一些代码