标签:parse click 开始 null 服务 iba stringfy get href
基本原理梳理、简单Ajax应用。
1. 建立TCP连接
2. Web浏览器向Web服务器发送请求命令。
3. Web浏览器发送请求头信息
4. 服务器应答
5. 服务器发送应答头信息
6. 服务器向浏览器发送数据
7. 服务器关闭TCP连接
1. 请求的方法或者动作:GET or POST
2. URL
3. 请求头。客户端的环境、身份信息等。
4. 请求体。待处理的信息。查询字符串或者表单信息。
注:请求头和请求体中间有空行,表示请求头结束、请求体开始。
1. 状态码:用数字或者文字,表示请求成功与否。
1XX | 信息类。收到请求处理。 |
2XX | 成功。 |
3XX | 重定向。请求未成功。 |
4XX | 客户端错误。如请求URL不存在:404 NOT FOUND |
5XX | 服务器错误。 |
2. 响应头:对应请求头。表示服务器信息。
3. 响应体:响应正文。
1. open(method, url, async):请求方法、url、异步与否。
2. setRequestHeader():自定义头部信息,可选。按照HTTP请求流程,在open和send方法间。
3. send(string):一般GET方法将信息附加到url后,所以这里string为null;而POST通常需要string。
1. readystatechange事件的监听一般放在open()方法之前。
2. 同步请求一般监听:responseText,responseXML,status/statusText(对应上面提到的状态码)、getResponseHeader()/getAllResponseHeader()
3. 异步请求除了监听上述的属性或者方法之外,还应该结合readystatechange事件,考虑readyState属性。
0 | 请求初始化、open未调用 |
1 | TCP连接建立、open已经调用 |
2 | 请求已经接收、受到头信息 |
3 | 处理中、收到主体 |
4 | 请求已完成、响应就绪、响应完成。 |
save.onclick = function(){ var createResult = document.getElementById("createResult"); var data = "name="+document.getElementById("staffName").value +"&number="+document.getElementById("staffNumber").value +"&sex="+document.getElementById("staffSex").value +"&job="+document.getElementById("staffJob").value; var request = createXHR(); request.onreadystatechange = function(){ if(request.readyState === 4){ if(request.status === 200){ createResult.innerHTML = request.responseText; }else{ alert("发生错误"+request.status); } } }; request.open("POST","server.php",false); request.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); request.send(data); }
1. 服务端:Content-type:application/json;将返回值调整成JSON的格式,设置必要的标志(如success:true/false)以供客户端进行逻辑处理。
2. 客户端:url指向新的PHP文件;对得到的响应数据进行解析:JSON.parse(responseText);访问解析的对应字段,进行相关处理。
$.ajax({ type:"POST", url:"serverJSON.php", dataType:"json", data:{ name:$("#staffName").val(), number:$("#staffNumber").val(), sex:$("#staffSex").val(), job:$("#staffJob").val() }, success:function(data){ if(data.success){ $("#createResult").html(data.msg); }else{ $("#createResult").html("出现错误:"+data.msg); } }, error: function(jqXHR){ alert("发生错误:"+jqXHR.status); } });
1. 前端:dataType从“json”改为“jsonp”;添加属性jsonp:callback
2. 后端:$jsonp=$_GET["callback"];修改返回值为$jsonp.("返回的数据")
3. 注意到“callback”就是双方约定的处理,需要保持一致。然后需要返回的数据前需要于这个约定的名称拼接。
比较新的处理方式,在旧版本浏览器中支持较差。只需要在服务端添加代码:
//表示所有域名都可以访问此资源 header("Access-Control-Allow-Origin:*"); //表示支持的方法 header("Access-Control-Allow-Methods:POST,GET");
标签:parse click 开始 null 服务 iba stringfy get href
原文地址:http://www.cnblogs.com/ideal-idiot/p/7839593.html