2009-08-27 20 views
36

Załóżmy, że chcę wykonać skrypt PHP. Która droga jest lepsza?jQuery ajax() vs get()/post()

to:

$.ajax({ 
    type: "GET", 
    url: "php-script.php", 
    dataType: "script" 
}); 

Albo to:

$.get("php-script.php", function(data) { }); 
+0

Jakie są efekty scenariusza? –

Odpowiedz

29

W tym przypadku powiedziałbym $.get, ponieważ od razu wiadomo, jaki jest typ żądania. W każdym razie jest to skrót dla większego i bardziej opcjonalnego wywołania ajaxowego, a konwersja między nimi jest w najgorszym przypadku trywialna.

Jeśli uważasz, że potrzebujesz wymyślnych opcji $.ajax, użyj $.ajax. Jeśli nie używać metod wygodę jQuery przewiduje takie jak .load, $.get itp

22

$.get() to tylko skrót dla $.ajax() połączenia typu "get".

Aby opracować $.get() po prostu wywołuje $.ajax() w tle. Jest to skrót podobny do tego, co $(function(){}) do . Typowe przypadki użycia dla $.get są szybkie i proste, należy użyć $.ajax, jeśli potrzebujesz czegoś bardziej skomplikowanego lub potrzebujesz dodatkowej elastyczności.

+0

$ .get zawija $ .ajax z typem = "GET". To coś więcej niż skrót, a kluczową różnicą jest to, że nie można wysłać żądania POST na serwer za pomocą $ .get. – karim79

+3

uhh myślałem, że to oczywiste ... zaktualizowałem go, ponieważ uważasz, że nie jest. –

+0

@Darko Z - nie, nie było to oczywiste z twojej odpowiedzi, dlatego to skomentowałem - żeby to podkreślić. Jednak twoja aktualizacja czyni to oczywistym. – karim79

1

$.get()/$.post() nie obsługują beforeSend jak $.ajax() robi. Więc nie możesz na przykład wyświetlać spinnera podczas ładowania bezpośrednio. Ale możesz to zrobić z .ajaxStart().