Arasındaki fark nedir $.ajax()
ve $.get()
ve $.load()
?
Hangisini kullanmak daha iyidir ve hangi koşullarda?
Arasındaki fark nedir $.ajax()
ve $.get()
ve $.load()
?
Hangisini kullanmak daha iyidir ve hangi koşullarda?
Yanıtlar:
$.ajax()
HTTP üstbilgileri ve benzeri üzerinde hassas bir denetim elde edeceğiniz en yapılandırılabilir olanıdır. Bu yöntemi kullanarak XHR nesnesine doğrudan erişebilirsiniz. Biraz daha ince taneli hata yönetimi de sağlanır. Bu nedenle daha karmaşık ve çoğu zaman gereksiz olabilir, ancak bazen çok yararlı olabilir. Geri gönderilen verilerle bir geri arama yapmak zorundasınız.
$.get()
sadece bir kısayoldur $.ajax()
ancak sizden gizlediği şeyler için makul varsayılan değerler ayarlayarak bazı yapılandırmalardan soyutlar. Verileri geri aramaya döndürür. Yalnızca GET isteklerine izin verir, bu nedenle $.post()
sadece POST için benzer soyutlama işlevi eşlik eder
.load()
, $.get()
ancak döndürülen verilerin belgeye nereye ekleneceğini tanımlamanızı sağlayan işlevler ekler. Bu nedenle gerçekten yalnızca arama yalnızca HTML ile sonuçlanacaksa kullanılabilir. Belirli bir jQuery ile sarılmış DOM öğesine bağlı bir yöntem olduğundan, diğer global aramalardan biraz farklı olarak adlandırılır. Bu nedenle:$('#divWantingContent').load(...)
Bu unutulmamalıdır bütün bu $.get()
, $.post()
,.load()
için hepsi sadece sargı olan $.ajax()
dahili olarak adlandırılır olarak.
JQuery'nin Ajax belgelerinde daha fazla ayrıntı: http://api.jquery.com/category/ajax/
Yöntemler farklı soyutlama katmanları sağlar.
$.ajax()
Ajax isteği üzerinde tam kontrol sahibi olmanızı sağlar. Diğer yöntemler ihtiyaçlarınızı karşılamıyorsa kullanmalısınız.
$.get()
bir Ajax GET
isteği yürütür . Döndürülen veriler (herhangi bir veri olabilir) geri arama işleyicinize aktarılır.
$(selector).load()
bir Ajax GET
isteği yürütecek ve seçilen döndürülen verilerin içeriğini (metin veya HTML olmalıdır) ayarlayacaktır.
Hangi yöntemi kullanmanız gerektiğine bağlıdır. Basit şeyler yapmak istiyorsanız, uğraşmanıza gerek yok$.ajax()
.
Örneğin $.load()
, döndürülen veriler daha fazla işlenmesi gereken JSON ise kullanmazsınız . Burada ya kullanırsınız $.ajax()
ya $.get()
.
http://api.jquery.com/jQuery.ajax/
jQuery.ajax()
Açıklama: Eşzamansız bir HTTP (Ajax) isteği gerçekleştirin.
Tam monty, her türlü Ajax isteğinde bulunmanızı sağlar.
http://api.jquery.com/jQuery.get/
jQuery.get()
Açıklama: HTTP GET isteği kullanarak sunucudan veri yükleyin.
Sadece HTTP GET istekleri yapmanıza izin verir, biraz daha az yapılandırma gerektirir.
.load()
Açıklama: Sunucudan veri yükleyin ve döndürülen HTML'yi eşleşen öğeye yerleştirin.
Veri almak ve bir öğeye enjekte etmek için uzmanlaşmıştır.
Çok basit ama
$.load()
: Bir konteyner DOM'sine bir parça html yükleyin.$.get()
: Bir GET çağrısı yapmak ve yanıtla kapsamlı bir şekilde oynamak istiyorsanız bunu kullanın .$.post()
: POST çağrısı yapmak ve bazı kapsayıcı DOM'larına yanıt yüklemek istemiyorsanız bunu kullanın.$.ajax()
: XHR başarısız olduğunda bir şey yapmanız veya anında ajax seçeneklerini (ör. Önbellek: true) belirtmeniz gerekiyorsa bunu kullanın.Önemli not: jQuery.load () yöntemi, veri parametresi sağlandıysa yalnızca GET değil , POST isteklerini de yapabilir (bkz: http://api.jquery.com/load/ )
data Tür: PlainObject veya String Sunucuya istekle gönderilen düz bir nesne veya dize.
İstek Yöntemi POST yöntemi, veri bir nesne olarak sağlanırsa kullanılır; aksi takdirde GET olduğu varsayılır.
Example: pass arrays of data to the server (POST request)
$( "#objectID" ).load( "test.php", { "choices[]": [ "Jon", "Susan" ] } );
Herkes haklı. İşlevler .load
, .get
ve .post
, işlevi kullanmanın farklı yoludur .ajax
.
Şahsen, .ajax raw işlevini çok kafa karıştırıcı buluyorum ve ihtiyaç duyduğumda yük, al veya posta kullanmayı tercih ediyorum.
POST aşağıdaki yapıya sahiptir:
$.post(target, post_data, function(response) { });
GET aşağıdakilere sahiptir:
$.get(target, post_data, function(response) { });
LOAD aşağıdakilere sahiptir:
$(*selector*).load(target, post_data, function(response) { });
Gördüğünüz gibi, aralarında çok az fark var, çünkü hangisini kullanacağını belirleyen durum bu. Bilgileri dahili olarak bir dosyaya mı göndermeniz gerekiyor? .Post kullanın (bu çoğu durumda olacaktır). Bilgileri, belirli bir ana bağlantı oluşturabilecek şekilde göndermeniz mi gerekiyor? .Get kullanın. Her ikisi de dosyaların yanıtını işleyebileceğiniz bir geri aramaya izin verir.
Önemli bir nokta, .load'un iki farklı şekilde hareket ettiğidir. Sadece hedef belgenin url'sini sağlarsanız, bir get gibi davranır (ve diyelim çünkü $_POST
varsayılan .load davranışını kullanırken denilen PHP'de kontrol etmeyi test ettim ve algılar $_POST
, değil$_GET
; belki daha hassas olurdu herhangi bir argüman olmadan .post gibi davrandığını varsayalım); ancak, http://api.jquery.com/load/ olarak, işleve bir dizi argüman sağladığınızda, dosyaya bilgileri POST yapar. Durum ne olursa olsun, .load işlevi bilgiyi doğrudan bir DOM öğesine ekleyecektir. ancak yanıtla daha fazlasını yapmak istiyorsanız geri arama sağlar. Ayrıca, .load bir dosyadan belirli bir kod bloğunu çıkarmanıza izin verir, örneğin bir kataloğu bir html dosyasına kaydetmenize ve parçalarını (öğeler) doğrudan DOM öğelerine almanıza olanak tanır.
$.get = $.ajax({type: 'GET'});
$.load()
yalnızca elemanlarda çağrılabilen bir yardımcı işlevdir.
$.ajax()
size en fazla kontrolü sağlar. Verileri POST yapmak, daha fazla geri arama almak isteyip istemediğinizi belirtebilirsiniz.
Her ikisi de bazı veriler göndermek ve bu verileri kullanarak bazı yanıtlar almak için kullanılır.
GET : Sunucuda depolanan bilgileri alın. (ör. arama, tweet, kişi bilgileri). Eğer bilgi göndermek istiyorsanız process.php?name=subroto
o zaman temelde url yoluyla bilgi gönderir. URL, 2036 karakterden fazlasını işleyemez. Yani blog yazısı için mümkün olmadığını hatırlıyor musun?
POST : Gönderi GET ile aynı şeyi yapar. Kullanıcı kaydı, Kullanıcı girişi, Büyük veri gönderme, Blog Yayını. Güvenli bilgi göndermeniz gerekiyorsa, url'den geçmediği için posta veya büyük veri kullanın.
AJAX : $.get()
ve $.post()
alt kümeleri olan özellikler içerir $.ajax()
. Daha fazla yapılandırmaya sahiptir.
$.get ()
bir çeşit steno $.ajax()
. Kullanırken $.get ()
, bir nesneyi iletmek yerine argümanları iletirsiniz. En azından, almak istediğiniz dosyanın URL'si (ör. Test.txt) ve başarılı bir geri arama olan ilk iki bağımsız değişkene ihtiyacınız vardır .
Herkes konuyu çok iyi açıkladı. .Load () yöntemi hakkında eklemek istediğim bir nokta daha var.
Gereğince Yük belgenin veri url suffixed seçici ekleyin sonra yükleme içeriğinde komut dosyalarını çalıştırmaz.
$(document).ready(function(){
$("#secondPage").load("mySecondHtmlPage.html #content");
})
Öte yandan, url'deki seçiciyi kaldırdıktan sonra yeni içerikteki komut dosyaları çalışacaktır. Bu örneği deneyin
index.html dosyasındaki url'deki #content öğesini kaldırdıktan sonra
$(document).ready(function(){
$("#secondPage").load("mySecondHtmlPage.html");
})
Tartışılan diğer yöntemler tarafından sağlanan böyle bir yerleşik özellik yoktur.