Jawaban:
Untuk Drupal 7 tidak ada yang istimewa di API, cukup gunakan PHP biasa:
if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
// AJAX request
}
Untuk Drupal 8, objek permintaan Symfony memiliki metode pembantu:
// Example for brevity only, inject the request_stack service and call
// getCurrentRequest() on it to get the request object if possible.
$request = \Drupal::request();
$is_ajax = $request->isXmlHttpRequest();
Anda dapat mempertimbangkan menggunakan current_path () di hook Anda, untuk memeriksa apakah path berisi kata 'ajax' di dalamnya.
Ex:
$current_path = current_path();
if (strpos($current_path, 'ajax') !== false) {
echo 'AJAX request detected!';
exit;
}
Karena tidak ada metode anti peluru untuk memeriksa permintaan AJAX (seperti HTTP_X_REQUESTED_WITH
dapat dipalsukan), berikut adalah alternatif lain berdasarkan URL:
if (end((arg())) == 'ajax') {
// AJAX request
}
Bekerja untuk tampilan (jika item URI terakhir berisi kata 'ajax').
Lihat juga: Bagaimana memeriksa apakah permintaan tersebut adalah permintaan AJAX dengan PHP?
Permintaan AJAX dalam lingkup bekerja dengan formulir di Drupal berarti formulir itu harus dibangun kembali. Untuk mendeteksi formulir yang harus dibangun kembali, seseorang harus memeriksa:
$form_state['rebuild'] == TRUE;
Bagaimana saya melakukannya menggunakan:
$request = $_SERVER['REQUEST_URI']
Di sana saya mendeteksi? _Wrapper_format = drupal_ajax