The jquery Ajax principle implements a simple Ajax instance

Source: Internet
Author: User

For Ajax, jquery is a rare good JS library, but many friends do not understand the AJAX implementation of the process, or do not understand, this CG is not advocated, CG write the following code on the one hand is to solve a netizen's doubt, Also hope that those who want to have a deep improvement in jquery technology can see the jquery source code more.


Here is a simple implementation of an AJAX support class, if you do not understand the words can initiate questions and comments.

The code is as follows Copy Code

/**
* Name: Ajax support JavaScript class
* Function: For the page to achieve AJAX support, simple encapsulation of AJAX requests
* Date Created: 2010-01-14
* Author: CG
*/
The following are common functions or objects
Whether it is IE
var Isie = (document.all)? True:false;

$ ID Selector
var $ = function (ID) {
Return "string" = = typeof ID? document.getElementById (ID): ID;
};
Class object
var Class = {
Create:function () {
return function () {this.initialize.apply (this, arguments);}
}
};
event function Bindings
var Bind = function (object, fun) {
return function () {
Return Fun.apply (object, arguments);
}
};

Global AJAX Objects
For Ajaxsupport object invocation
var $ajax = function (obj) {
Error message
if (undefined = = Obj.error) {
Obj.error = Ajaxerror;
}
Create new objects, which can be implemented using a single example to reduce resource consumption
New Ajaxsupport (obj);
};

Common Ajax Error display
function Ajaxerror (msg) {
Alert (msg);
}

var ajaxsupport = Class.create ();
Ajaxsupport.prototype ={
/** Initialization method
* Parameter: Obj calls the object
*/
Initialize:function (obj) {
This._xmlhttp = null;
URL Object
This._url = Obj.url;
Request Method Object
This._method = Obj.method;
Request method
This._asyn= Obj.asyn;
Request data
This._data= Obj.data;
Request succeeded
this._success = obj.success;
Error
This._error = Obj.error;
Initialize HttpRequest
This._inithttprequest ();
Start request
This._ajaxrequest ();
},
Request status changes
_readystatechange:function () {
Only Judge 4 of the situation, the other needs to set up a separate
if (4 = this._xmlhttp.readystate) {
Request succeeded
if (= = This._xmlhttp.status) {
if (undefined!= this._success) {
Send request to Caller
This._success (This._xmlhttp.responsexml);
}
}
Error, or return result not 200
else{
if (undefined!= this._error) {
This._error ("Error:server Internal error!");
}
}
}
},

Start Ajax Request
_ajaxrequest:function () {
Open Request
try{
Open Request
This._xmlhttp.open (This._method, This._url, This._asyn);
}catch (e) {
Open Request Error
if (undefined!= this._error) {
This._error ("error:openning Ajax Request error!");
}
}
try{
Send Request
This._xmlhttp.send (This._data);
}
catch (e) {
Sending data errors
if (undefined!= this._error) {
This._error ("error:sending Ajax Request error!");
}
}
},

Initializing the HttpRequest object
_inithttprequest:function () {
Initialize Httpreqest
if (!isie) {//ff Opera safari
This._xmlhttp = new XMLHttpRequest ();
}else{//ie
try{//ie6+
This._xmlhttp = new ActiveXObject ("Msxml2.xmlhttp");
}catch (e) {
try{//ie5.5+
This._xmlhttp = new ActiveXObject ("Microsoft.XMLHTTP");
}catch (e) {
Browser does not support
if (undefined!= this._error) {
This._error ("sorry! Your Browser dose not Support ajax! ");
}
}
}
}
Event Bindings
if (null!= this._xmlhttp) {
Binding state Change Event
This._xmlhttp.onreadystatechange = Bind (this, this._readystatechange);
}else{
Binding Event Call Error message
if (undefined!= this._error) {
This._error ("Error:init Ajax Object error!");
}
}
}
}

Here is a simple call code, I believe that the use of jquery friends feel very similar to it?

The code is as follows Copy Code

Function Testajax () {
    var req = "text=" + $ ("txtname"). Value;
   //Object Invoke Ajax Test
    $ajax ({
        URL: "Ajaxtest",
         method: "Post",
        asyn:true,
         data:req,
        success:function ( obj) {
       //Here test output data, do not parse XML
             $ ("msg"). InnerHTML = obj;
       },
        error:function ( msg) {
       //error message display
             $ ("msg"). InnerHTML = msg;
       }
   });
}

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.