Wpis ten przeznaczony jest dla bardziej zaawansowanych programistów, którzy używają lub zamierzają używać AJAXa (Asynchronous JavaScript and XML). Chciałbym przybliżyć w nim w jaki sposób poprawnie i bez zbędnych kombinacji obsłużyć odpowiedź takiego asynchronicznego pytania do serwera.

We wszelkich tutorialach i poradnikach nikt nie używa właściwych funkcji. Przynajmniej ja takiego poradnika do tej pory nie widziałem. Na opisywane tutaj funkcje i praktyki natknąłem się przypadkiem podczas przerzucania Codexu. A oto dwa proste narzędzia, jako niezbędne minimum poprawnej obsługi AJAX.

Co najlepsze praktyki te nie są pokazane nawet na zbiorczej stronie tej tematyki: AJAX in Plugins w dokumentacji. Być może w celu uproszczenia zagadnienia, ale jednak warto byłoby wspomnieć w tych listingach, że ważne jest zabezpieczenie itd.

1. Nonce

To bardzo przydatne narzędzie do sprawdzenia spójności danych oraz kontrola wywoływania określonych akcji. Po więcej informacji odwiedź Codex – WordPress Nonces.

Używaj funkcji:

Co najważniejsze używaj najbardziej specyficznych ciągów wejściowych. Zamiast ciągu:

'remove_post'

daj:

'remove_post_'.$post->ID

I użyj odpowiednich funkcji do ich sprawdzenia. W przypadku AJAXa użyj: check_ajax_referer().

2. JSON

die(json_encode($data));

Proszę, nie rób tego.

W JS będziesz musiał parsować tego stringa, żeby otrzymać to czego tak na prawdę potrzebujesz.

Użyj natywnych funkcji WordPressa.

Jeśli zakładasz, że zawsze wszystko będzie ok, użyj: wp_send_json()

Jeśli chcesz wysłać z powrotem do JS jakąś informację czy operacja się powiodła czy nie, użyj:

Zwrócony obiekt będzie zawierał dwie własności: pierwsza success, która jest wartością logiczną i przyjmuje kolejno true w przypadku pierwszej funkcji i false w przypadku drugiej. Druga własność to zakodowane do JSONa dane.

Funkcja ta prócz zwykłego printowania JSONa wysyła również odpowiedni nagłówek. Dzięki czemu dane w odpowiedzi traktowane są od razu jako JSON a nie jako zwykły string, z którego musisz dopiero zrobić JSONa.

Na koniec

Mam nadzieję, że jeśli nie znałeś/łaś tych funkcji to zaczniesz ich używać. Jeśli były Ci znane – tym bardziej się cieszę :)

Złota rada na koniec – debuga przeprowadź po stronie JS i użyj do tego console.log() :)

Opublikowany przez Kuba Mikita

Miłośnik minimalizmu i prostoty, bo nie potrafi stworzyć niczego ładnego. Ma kołdrę, na której wypisane są funkcje WordPressa.

3 odpowiedzi na “Poprawna obsługa AJAX w WordPress”

  1. Dzięki wielkie właśnie takich informacji szukałem. Od niedawna używam ajaxa i ciągle mam wrażenie że jestem zielony.Mam nadzieje że więcej znajdę na twoim blogu ciekawych rzeczy.

    1. Dzięki za komentarz! Cieszę się, że informacje się przydały :)
      Trafiłeś do mnie z Google?

Możliwość komentowania została wyłączona.