2011-05-06 14 views
6

बिना किसी को भी कैसे ajax अनुरोध समारोह है कि jQuery, आदि जैसे एक जावास्क्रिप्ट ढांचे का उपयोग किए बिना पार ब्राउज़र काम करता है बनाने के लिए पता है?जावास्क्रिप्ट ajax अनुरोध ढांचे

+0

मुझे लगता है कि यह वेब पर है। मुझे w3school का उल्लेख करने से डर है, लेकिन यह Google पर पहले परिणाम पर है !! [AJAX ट्यूटोरियल] के लिए खोजें (http://www.google.com.my/search?sourceid=chrome&ie=UTF-8&q=ajax+tutorials) – Sufendy

+1

मैं एम्बेड करने योग्य जेएस कोड बनाने की कोशिश कर रहा हूं, इसलिए इसे छोटा होना चाहिए और पोर्टेबल –

+3

"इसके अलावा, Google को आजमाएं।" अरे, मैं यहाँ कैसे आया। मुझे लगता है कि यह काम किया! – jeremyjjbrown

उत्तर

10

XMLHttpRequest वस्तु वास्तव में यह सब का उपयोग करने के जटिल नहीं है। मोटे तौर पर संगत होना करने के लिए, आप वस्तु बनाने के लिए एक खेल का एक सा खेलने के लिए है, लेकिन बाद कि यह सरल कार्यों के लिए काफी सीधा है।

माइक्रोसॉफ्ट एक क्रॉस-ब्राउज़र तरीका है कि आईई के प्रारंभिक संस्करणों का समर्थन करता है में वस्तु बनाने के लिए एक समारोह सहित MSDN page for XMLHttpRequest पर उदाहरण, है। यहाँ उनके उदाहरण है:

function getXMLHttpRequest() 
{ 
    if (window.XMLHttpRequest) { 
     return new window.XMLHttpRequest; 
    } 
    else { 
     try { 
      return new ActiveXObject("MSXML2.XMLHTTP.3.0"); 
     } 
     catch(ex) { 
      return null; 
     } 
    } 
} 

function handler() 
{ 
    if (oReq.readyState == 4 /* complete */) { 
     if (oReq.status == 200) { 
      alert(oReq.responseText); 
     } 
    } 
} 

var oReq = getXMLHttpRequest(); 

if (oReq != null) { 
    oReq.open("GET", "http://localhost/test.xml", true); 
    oReq.onreadystatechange = handler; 
    oReq.send(); 
} 
else { 
    window.alert("AJAX (XMLHTTP) not supported."); 
} 

मैं सर्वोत्तम प्रथाओं (माइक्रोसॉफ्ट उनके MSDN उदाहरण काफी हद तक बहुत, बहुत अनुभवहीन इंजीनियरों द्वारा लिखित है लगता है) के ऊपर एक मिसाल है सुझाव दे नहीं कर रहा हूँ, लेकिन यह आपको एक प्रारंभिक बिंदु देता है। उदाहरण के लिए, उपर्युक्त की आवश्यकता है कि सफलता की स्थिति सफलता के लिए 200 हो, जहां निश्चित रूप से HTTP विनिर्देश स्पष्ट है कि 200 < = n < = 29 9 रेंज "सफलता" है।

+1

+1। वास्तव में, माइक्रोसॉफ्ट अपने MSDN उदाहरण में प्रयुक्त कोड की गुणवत्ता पर काम करने की जरूरत है, लेकिन यह एक अच्छा प्रारंभिक बिंदु है। – Nathan

1

मैं अक्सर आधुनिक ब्राउज़रों में भेजने और केवल json प्राप्त करने के लिए इस विधि का उपयोग (कोई पुराने यानी की)

function aj(method, url, data, cb){ 

    var xhr = new XMLHttpRequest(); 
    xhr.onreadystatechange = readystatechange; 
    xhr.open(method, url); 
    xhr.setRequestHeader('Content-Type', 'application/json'); 
    xhr.send(data && JSON.stringify(data)); 

    function readystatechange(){ 
     if(this.readyState === this.DONE) { 

      switch(this.status){ 
       case 200: 
       if(this.getResponseHeader('Content-Type').split(';')[0] !== 'application/json'){ 
        return cb("unexpected Content-Type: '" + this.getResponseHeader('Content-Type') + "'", null); 
       } 
       return cb(null, JSON.parse(this.response)); 

       case 401: 
       location.href = '/authentication/login'; 
       return; 

       default: 
       return cb("unexpected status: " + this.status + "", null); 
      } 
     } 
    }//readystatechange 
}