Ajax-JS

Ajax:异步交互传输技术 ----就是用来与后台交互数据用的

GET请求方式:通过URL地址传递,其传输数据也在URL地址中 ,一般是以字符串形式传递接收,安全性相对不太高

POST请求方式:通过浏览器内部传输,一般在send()方法前面要添加头文件即setRequestHeader(),数据由send()方法借由参数形式传递,传递数据格式多,安全性相对高点

 

发送请求(get和post的区别):

send(要发送的数据):发送请求
中文编码
缓存
POST:setRequestHeader(类型, 内容):设置请求头
"Content-Type","application/x-www-form-urlencoded”

数据类型(返回数据的处理):
服务器返回给咱们的真正数据
XML、HTML、JSON
JSON的写法
Eval解析JSON的时候需要注意的地方
JSON.parse() : 字符串解析成对象

后端数据的接收:
$_GET
- 通过URL传递给该脚本的变量的数组
$_POST
- 通过HTTP POST方法(表单)传递给该脚本的变量的数组
前后台键名和传输方式必须一致
数据传输方式
数据获取方式

        var xhr = null;
        try {
            xhr = new XMLHttpRequest();
        } catch (e) {
            xhr = new ActiveXObject('Microsoft.XMLHTTP');
        }
        
        xhr.open('post','2.post.php',true);
        //post方式,数据放在send()里面作为参数传递
        xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded');//申明发送的数据类型
        //post没有缓存问题
        //无需编码
        xhr.send('username=刘伟&age=30');
        
        xhr.onreadystatechange = function() {
            
            if ( xhr.readyState == 4 ) {
                if ( xhr.status == 200 ) {
                    alert( xhr.responseText );
                } else {
                    alert('出错了,Err:' + xhr.status);
                }
            }
            
        }

 

get缓存问题:

来源:每次都是发送同一个URL地址,发送访问请求后,会有一个缓存,之后还是同样的一个URL地址,这时候,浏览器就会直接去读取缓存,不会再向服务器发送请求

解决方法:‘2.get.php?username=leo&age=30&’+new Date().getTime();或者加个Math.random()随机函数;在URL问号后面连接一个随机数时间戳

get传输中文有乱码问题: URL中传输数据,使用编码 encodeURL     ‘2.get.php?username='+encodeURI('刘伟')+'&age=30&’+new Date().getTime();

 

post方式:

xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded');声明数据发送的数据类型

post方式,数据放在send()里面作为参数传递

没有中文乱码问题,因为在请求头中已经告诉后台的格式了

 

posted @ 2015-09-05 10:36  Jeff_lzf  阅读(171)  评论(0编辑  收藏  举报