Home > Article > Web Front-end > Scripting HTTP with Ajax
The main feature of AJax is to use scripts to manipulate data exchange between HTTP and web servers without causing page reloading.
All modern browsers support the XMLHttpRequest object (IE5 and IE6 use ActiveXObject).
var xmlhttp =new XMLHttpRequest()
var xmlhttp =new ActiveXObject("Microsoft.XMLHTTP");
For example
function createXML(){ if(typeof XMLHttpRequest != "undefined"){//标准 return new XMLHttpRequest(); }else if(typeof ActiveXObject != "undefined"){//兼容IE5,IE6 if(typeof arguments.callee.activeXString != "string"){ var versions = ["MSXML2.XMLHttp.6.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp"],i,len; for (i=0,len=versions.length; i < len; i++) { try{ new ActiveXObject(versions[i]); arguments.callee.activeXString = versions[i]; break; }catch(ex){ //跳过 } } } return new ActiveXObject(arguments.callee.activeXString); }else{ throw new Error("no XRL object available."); } }var xml = new createXML();
After the object is created, the next step to initiate an http request is to call the open() method of the XMLHttpRequest object. It receives three parameters:
The type of request to send, case-insensitive
The requested URL, here relative to the document URL, if the absolute URL, protocol, host and port are specified, they must match the corresponding content of the document: cross-domain requests will usually report an error
Boolean value of whether to send asynchronously;
If there is request header, then the next step is to set it.
xml.setRequestHeader("Content-Type","text/plain");
If the request header is called multiple times, overwriting will not occur
If the request requires a password-protected URL, the username and The password is passed as the fourth and fifth parameters to open()
The last step in making the request is to specify the optional body and send it to the server. It should be noted that GET requests have absolutely no body, but when using POST to send a request, you must cooperate with the setRequestHeader method
xml.send(null);
A complete HTTP response has a status code, response It consists of a collection of headers and a response body. These are available through the properties and methods of the XMLHttpRequest object:
- The status and statusText properties return the HTTP status code (such as 200 ok) in the form of numbers and text
- Use getResponseHeader and getAllResponseHeaders() to query response headers
- The response body can be obtained in text form from the responseText attribute and in Document form from the responseXML attribute
- XMLHttpRequest objects are typically used asynchronously: the send method returns immediately after sending the request, and the response methods and properties listed previously are not valid until the response returns. In order to be notified when the response is ready, you must listen to the readystatechange event on the XMLHttp object
readyState is an integer that specifies the status of the HTTP request
For example
var xml = new createXML();xml.open("get","hello-world.html",false);xml.onreadystatechange = function(url,callback){ if(xml.readyState === 4){ if((xml.status >= 200 && xml.status < 300) || xml.status === 304){ console.log(xml.responseText); }else{ console.log("request is not ok" + xml.status); } } }xml.send(null);
Console output
Meaning | ||
---|---|---|
Content type that the browser can handle | ||
Character set that can be displayed | ||
Compression encoding that can be processed | ||
Between browser and server The connection type | ||
The domain where the page is located | ||
The cookie set by the page | ||
The page URL from which the request was made | ||
Browser User Agent String |
事件 | 事件处理程序 | 描述 |
---|---|---|
open | Socket.onopen | 连接建立时触发 |
message | Socket.onmessage | 客户端接收服务端数据时触发 |
error | Socket.onerror | 通信发生错误时触发 |
close | Socket.onclose | 连接关闭时触发 |
参考文档——websocket
AJax的主要特点是使用脚本操纵HTTP和web服务器之间的数据交换,不会导致页面重载。
The above is the detailed content of Scripting HTTP with Ajax. For more information, please follow other related articles on the PHP Chinese website!