2010-08-12 15 views
25

मैं एक बहुत छोटे (एक लाइनर) के लिए देख रहा हूँ अजाक्स JavaScript लाइब्रेरी एक छोटे से स्क्रिप्ट की पहली पंक्ति पर जोड़ने के लिए कुछ अनुरोध करने के लिए।छोटे अजाक्स JavaScript लाइब्रेरी

मैं पहले से ही करने की कोशिश की:

लेकिन वे सब पर काम नहीं करते। वैकल्पिक?

+2

मैं कोई वास्तविक कारण है कि इन दो पुस्तकालयों कार्य नहीं करेगा देखते हैं। की –

+0

संभव डुप्लिकेट [jQuery के बिना एक ajax कॉल करने के लिए कैसे?] (http://stackoverflow.com/questions/8567114/how-to-make-an-ajax-call-without-jquery) – parvus

+0

मैं भी में microajax का उपयोग मेरी बड़ी स्केल वेबसाइट, लेकिन हो सकता है कि jquery http://static.lastdates.com/package/microajax/test.html –

उत्तर

33

यहां आपको बहुत सरल:

function createXHR() 
{ 
    var xhr; 
    if (window.ActiveXObject) 
    { 
     try 
     { 
      xhr = new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     catch(e) 
     { 
      alert(e.message); 
      xhr = null; 
     } 
    } 
    else 
    { 
     xhr = new XMLHttpRequest(); 
    } 

    return xhr; 
} 

प्रलेखन है here

उदाहरण:

var xhr = createXHR(); 
xhr.onreadystatechange = function() 
{ 
    if (xhr.readyState === 4) 
    { 
     alert(xhr.responseText); 
    } 
} 
xhr.open('GET', 'test.txt', true) 
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); 
xhr.send() 

अद्यतन:

आदेश क्रॉस-डोमेन स्क्रिप्टिंग करने के लिए , आपको या तो कॉल करना होगा एक स्थानीय सर्वर साइड प्रॉक्सी (जो पढ़ता है और गूंज दूरस्थ डेटा है), या करने के लिए बाहर, यदि आपका दूरस्थ सेवा देता है JSON, इस विधि का उपयोग:

JSON के बाद से अनिवार्य रूप से एक जावास्क्रिप्ट वस्तु या सरणी है, यह है एक मान्य स्रोत। आप सैद्धांतिक रूप से तो दूरस्थ सेवा सीधे कॉल में सक्षम होना चाहिए । मैं इस परीक्षण नहीं किया है, लेकिन यह एक स्वीकृत व्यवहार हो रहा है:

संदर्भ: Calling Cross Domain Web Services in AJAX

+0

ओह लेकिन अब मैं क्या भूल गया था: यह क्रॉस-डोमेन होना चाहिए: ओ – TomShreds

+0

ओह, यह एक मोटा है। [शोध] –

+3

@ टॉम मैं कहूंगा कि यह अपने आप के सवाल के लायक है। –

-1

खैर ...... jQuery शायद आप क्या चाहते हैं की तुलना में बड़ा है, लेकिन यह यकीनन अभी भी एक बहुत अच्छा विकल्प नहीं है। यह अच्छी तरह से प्रलेखित है, अच्छी तरह से समर्थित, और यदि आप CDN लिंक

http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js 

का उपयोग तो यह और भी बहुत वर्तमान और पहले से ही ग्राहक की मशीन पर कैश होने की संभावना है।

+0

Google सीडीएन: http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery .min.js – Radu

+0

@ राडू चीयर्स, वह यूआरएल मेरा मतलब था। –

+0

धन्यवाद लेकिन मैं केवल एक छोटा सा स्निपेट चाहता था। मैं अपने सभी जावास्क्रिप्ट से संबंधित काम के लिए jQuery का उपयोग करता हूं लेकिन इस समय मुझे कुछ बहुत छोटा चाहिए। – TomShreds

3

तो ... छोटे ...

var obj = (window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP") : (XMLHttpRequest && new XMLHttpRequest()) || null; 
+0

बहुत अजाक्स। इस तरह की वाह – samvv

3

यहाँ में async कॉलबैक के साथ अपने संस्करण है Node.js शैली

https://gist.github.com/4706967

// tinyxhr by Shimon Doodkin - licanse: public doamin - https://gist.github.com/4706967 
// 
// tinyxhr("site.com/ajaxaction",function (err,data,xhr){ if (err) console.log("goterr ",err,'status='+xhr.status); console.log(data) }); 
// tinyxhr("site.com/ajaxaction",function (err,data,xhr){ if (err) console.log("goterr ",err,'status='+xhr.status); console.log(data) },'POST','value1=1&value2=2'); 
// tinyxhr("site.com/ajaxaction.json",function (err,data,xhr){ if (err) console.log("goterr ",err,'status='+xhr.status); console.log(data); console.log(JSON.parse(data)) },'POST',JSON.stringify({value:1}),'application/javascript'); 
// cb - function (err,data,XMLHttpRequestObject){ if (err) throw err; } 
// 

function tinyxhr(url,cb,method,post,contenttype) 
{ 
var requestTimeout,xhr; 
try{ xhr = new XMLHttpRequest(); }catch(e){ 
try{ xhr = new ActiveXObject("Msxml2.XMLHTTP"); }catch (e){ 
    if(console)console.log("tinyxhr: XMLHttpRequest not supported"); 
    return null; 
} 
} 
requestTimeout = setTimeout(function() {xhr.abort(); cb(new Error("tinyxhr: aborted by a timeout"), "",xhr); }, 5000); 
xhr.onreadystatechange = function() 
{ 
    if (xhr.readyState != 4) return; 
    clearTimeout(requestTimeout); 
    cb(xhr.status != 200?new Error("tinyxhr: server respnse status is "+xhr.status):false, xhr.responseText,xhr); 
} 
xhr.open(method?method.toUpperCase():"GET", url, true); 

//xhr.withCredentials = true; 

if(!post) 
    xhr.send(); 
else 
{ 
    xhr.setRequestHeader('Content-type', contenttype?contenttype:'application/x-www-form-urlencoded'); 
    xhr.send(post) 
} 
} 

tinyxhr("/test",function (err,data,xhr){ if (err) console.log("goterr ",err); console.log(data) }); 
0

आप probab कर सकते हैं ly उपयोग ओमेई। यह एक एकल फ़ाइल है जिसमें कई बार जावास्क्रिप्ट फ़ंक्शंस जैसे AJAX अनुरोध शामिल हैं।

https://github.com/agaase/omee/blob/master/src/omee.js

एक ajax अनुरोध तुम सिर्फ omee.raiseAjaxRequest

तर्क

params- मापदंडों सूची ई के साथ

फोन बढ़ाने के लिए।जी param1 = param1value & param2 = param2value

यूआरएल - प्राप्त/पोस्ट - यूआरएल सर्वर

func- समारोह नाम जो वापस

connType के नाम से जाना है हिट करने के लिए।

19

आप jQuery का अपना संस्करण बना सकते हैं जिसमें केवल AJAX मॉड्यूल शामिल हैं।

https://github.com/jquery/jquery#how-to-build-your-own-jquery
https://github.com/jquery/jquery#modules

+0

यह बहुत अच्छा सुझाव है। कौन इसे कम करेगा और क्यों? एसई जाओ! – Phil

+1

धन्यवाद @phil, एक असंतुष्ट प्रेमी शायद – msaspence

+2

http://projects.jga.me/jquery-builder/ पता चलता है कि यहां तक ​​कि एक-केवल ajax jQuery 2.1.1 18kb gzipped और न्यूनतम किया गया है (पूर्ण jQuery 28kb है)। बस इसका जिक्र करना चाहता था क्योंकि मुझे आश्चर्य हुआ कि यह छोटा नहीं था। – Keeth