2010-01-16 17 views
31

क्या किसी को पता है कि $("#id").load और $.ajax के बीच क्या अंतर है?

+0

अधिक के लिए: http://stackoverflow.com/questions/3870086/difference-between-ajax-and-get-and-load – cregox

उत्तर

75

मुझे आप के लिए चीजों को स्पष्ट एक छोटा सा है::

$.ajax() है

$("#id").load(...); 

शायद के बराबर है बुनियादी और निम्न-स्तरीय AJAX फ़ंक्शन jQuery प्रदान करता है जिसका अर्थ है कि आप जो भी चाहें कर सकते हैं, आपके साथ काम कर सकते हैंवस्तु। लेकिन एक बार एक बार jQuery डेवलपर्स ने सोचा कि वास्तव में $.ajax() के अलावा, वे डेवलपर्स के लिए अधिक विशिष्ट तरीकों को प्रदान कर सकते हैं ताकि उन्हें $.ajax() विधि को जिस तरीके से काम करना है, उसे बनाने के लिए अधिक पैरामीटर पारित करने की आवश्यकता नहीं होगी। उदाहरण के लिए वे बजाय $.ajax() को पैरामीटर के रूप json गुजर वापसी डेटा प्रकार से संकेत मिलता है के बारे में कहा, वे प्रदान की $.getJSON() तो हम सभी जानते हैं होता है कि वापसी प्रकार हम उम्मीद json, या बजाय post या get के रूप में विधि भेजने का संकेत का था, तो आप इस्तेमाल कर सकते हैं $.post() या $.get() क्रमशः।

तो load() वही बात है, यह आपके एचटीएमएल में एचटीएमएल डेटा इंजेक्ट करने में आपकी मदद कर सकती है। load() विधि के साथ आप जानते हैं कि एक HTML भाग की उम्मीद की जा रही है।

क्या यह अच्छा नहीं है?

मुझे लगता है कि मैं प्यार में गिर गया हूं।

अधिक जानकारी के लिए, आप jquery.com पर जा सकते हैं, वे अपनी नई लाइब्रेरी और एपीआई ट्यूटोरियल पेज भी प्रदान कर रहे हैं।

संपादित करें:

$.ajax({ 
    type: "POST", 
    url: "some.php", 
    data: "name=John&location=Boston", 
    success: function(msg){ 
    alert("Data Saved: " + msg); 
    } 
}); 

नीचे के रूप में एक ही है:

$.post("some.php", { name: "John", time: "2pm" }, 
    function(data){ 
    alert("Data Loaded: " + data); 
    }); 

अब आप यह $.ajax() का सरलीकृत संस्करण है देख सकते हैं, के बाद कॉल करने के लिए, आप पास करनी होगी भेजने के विधि प्रकार की कुछ जानकारी जो post है जैसा कि पहले उदाहरण में दिखाया गया है लेकिन ऐसा करने के बजाय आप $.post() का उपयोग कर सकते हैं क्योंकि आप जानते हैं कि आप क्या कर रहे हैं post s o यह संस्करण अधिक सरल और काम करने में आसान है।

लेकिन कुछ मत भूलना। load() के अलावा, अन्य सभी ajax तरीकों लौट एक्सएचआर (XmlHttpRequest उदाहरण) इतनी के रूप में यदि आप XmlHttpRequest साथ काम कर रहे थे आप उन्हें इलाज कर सकते हैं, वास्तव में आप यद्यपि इसके साथ काम कर रहे हैं :) और लेकिन load() रिटर्न jQuery जिसका अर्थ है:

$("#objectID").load("test.php", { 'choices[]': ["Jon", "Susan"] }); 
ऊपर दिए गए उदाहरण में

, आप आसानी से वापसी एचटीएमएल #objectID तत्व में इंजेक्ट कर सकते हैं। क्या यह अच्छा नहीं है? अगर यह jQuery वापस नहीं कर रहा था, तो आपको कॉलबैक फ़ंक्शन के साथ काम करना चाहिए था, जहां आपको शायद data ऑब्जेक्ट का परिणाम मिल गया है और इसे मैन्युअल रूप से HTML तत्व में इंजेक्ट करें। तो यह परेशानी होगी लेकिन $.load() विधि के साथ, यह वास्तव में jQuery में सरलीकृत है।

$("#feeds").load("feeds.php", {limit: 25}, function(){ 
    alert("The last 25 entries in the feed have been loaded"); 
}); 

तुम भी मानकों पोस्ट कर सकते हैं, तो वे पैरामीटर के अनुसार आप सर्वर साइड पर कुछ काम कर और html भाग ग्राहक को वापस भेजने और अपने प्यारा jQuery कोड यह लेता है और में #feeds HTML तत्व को इसकी सुई कर सकते हैं उपरोक्त उदाहरण। http://github.com/jquery/jquery/blob/master/src/ajax.js#L15

आप देख सकते हैं, यह कुछ विकल्पों से निपटने के साथ एक $ajax है:

+2

को धन्यवाद दिया जो कि एक आदर्श वर्णन था। तो .getJSON और .post और .get सभी AJAX कॉल भी हैं? अच्छा! –

+0

हाँ .. वे सभी AJAX कॉल हैं, '$ .ajax()' – Tarik

+0

के अधिक सरलीकृत संस्करण मैंने अपनी पोस्ट में कुछ सुधार किया है, शायद यह आपको और भी मदद कर सकता है। आपकी मदद करके प्रसन्नता हुई। – Tarik

3

प्रलेखन से ...

$(selector).load(..)

लोड एक दूरस्थ फ़ाइल से HTML और डोम को इसकी सुई।

$.ajax(...)

लोड एक HTTP अनुरोध का उपयोग कर एक दूरस्थ पेज। यह jQuery का निम्न-स्तर AJAX कार्यान्वयन है।

load प्राप्त करने में कठिनाई (जीईटी के माध्यम से जब तक मापदंडों प्रदान की जाती हैं, तो पोस्ट प्रयोग किया जाता है) एक HTML पृष्ठ और सीधे चयनित नोड्स ($(selector).load(...) की $(selector) भाग द्वारा चयन किये गए में सम्मिलित करने के लिए विशेष रूप से है।

$.ajax(...) एक अधिक सामान्य विधि आप प्राप्त और पोस्ट अनुरोध करने की अनुमति देता है कि मैं प्रलेखन पढ़ने के लिए प्रोत्साहित है, और प्रतिक्रिया के साथ विशिष्ट कुछ नहीं करता है।

+0

अगर .load async है, तो क्या यह xhtmlrequestobject का भी उपयोग कर रहा है? –

+0

इस पर सबसे अच्छा प्रलेखन कौन सा है? क्या यह jquery वेबसाइट है? –

+0

jQuery में सभी रिमोट अनुरोध पर्यावरण के आधार पर HttpXmlRequest या सक्रिय एक्स नियंत्रण का उपयोग करते हैं। और हाँ, jquery दस्तावेज सबसे अच्छा प्रलेखन है। –

17

load() एचटीएमएल को पुनः प्राप्त करने के लिए एक अजाक्स अनुरोध शुरू करता है, जो लौटाए जाने पर, चयनित चयनकर्ता को सेट किया जाता है।

सभी jQuery Ajax functions हैं बस $.ajax() के लिए रैपर तो:

$.ajax({ 
    url: "...", 
    dataType: "html", 
    success: function(data) { 
    $("#id").html(data); 
    } 
}); 
+0

को अपरिवर्तित किया है यह क्या करता है? $ ("# आईडी")। एचटीएमएल (डेटा)? क्या यह 'डेटा' के साथ .innerHtml को ओवरराइट करता है? –

+0

तो .load के साथ कम से कम आपको सफलता/असफल विधियों की पेशकश करने की आवश्यकता नहीं है ... क्या मैं सही हूँ? –

+0

हां। एचटीएमएल() element.innerHTML = "..." के बराबर है। लोड() एक सफल कॉलबैक विकल्प प्रदान करता है (उपरोक्त लिंक देखें) लेकिन कोई विफलता हुक नहीं है। – cletus

1

यहाँ load समारोह के लिए स्रोत कोड है। दूसरे शब्दों में, एक सुविधा विधि।

4

एक संक्षिप्त सारांश और सबसे महत्वपूर्ण अंतर यह है कि $.ajax आपको content-type और datatype सेट करने की अनुमति देता है।

ये दो JSON अनुरोध, या XML अनुरोध करने के लिए महत्वपूर्ण हैं। ASP.NET अनुपलब्ध सामग्री-प्रकार फ़ील्ड के साथ अधिक उग्र है (कम से कम जब आप [WebMethod] का उपयोग करते हैं) और JSON के बजाय पृष्ठ के HTML को वापस कर देगा।

$.load() का उद्देश्य सीधे HTML को वापस करना है। $.ajax भी आप

  • कैशिंग
  • त्रुटि से निपटने डेटा
  • पासवर्ड

प्लस दूसरों के

  • छानने देता है।

  • 0

    उपरोक्त उत्तर स्थगित और वादे ऑब्जेक्ट्स के उपयोग के प्रकाश में अब मान्य नहीं हो सकता है। मेरा मानना ​​है कि .ajax के साथ आप इसका उपयोग कर सकते हैं। लेकिन जब आप .load के साथ ऐसा नहीं कर सकते हैं। संक्षेप में, मेरा मानना ​​है कि .azax .load से अधिक शक्तिशाली है।उदाहरण के लिए:

     some_promise = $.ajax({....}); 
         .when(some_promise).done(function(){.... }); 
    

    आपको HTML लोडिंग पर अधिक बारीक नियंत्रण मिलता है। असफलता और "कोई फर्क नहीं पड़ता" मामलों के लिए भी है। आपको इसे लोड में नहीं मिलता है। उम्मीद है कि मैं इस पर सही हूँ।

    संबंधित मुद्दे