Yanıtlar:
Drupal 7 için API'de özel bir şey yok, sadece düz PHP kullanın:
if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
// AJAX request
}
Drupal 8 için Symfony istek nesnesinin bir yardımcı yöntemi vardır:
// 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();
Yolda 'ajax' kelimesinin bulunup bulunmadığını kontrol etmek için çağrınızda current_path () yöntemini kullanmayı düşünebilirsiniz .
Ör:
$current_path = current_path();
if (strpos($current_path, 'ajax') !== false) {
echo 'AJAX request detected!';
exit;
}
AJAX isteğini kontrol etmek için kurşun geçirmez bir yöntem olmadığından ( HTTP_X_REQUESTED_WITHkimlik sahtekarlığı olduğu gibi ), URL'ye dayanan başka bir alternatif daha vardır:
if (end((arg())) == 'ajax') {
// AJAX request
}
Görünümler için çalışır (son URI öğesinin 'ajax' kelimesi içermesi durumunda).
Ayrıca bkz: İsteğin PHP ile AJAX isteği olup olmadığı nasıl kontrol edilir?
Drupal'da formlarla çalışma kapsamındaki AJAX talebi, formun yeniden oluşturulması gerektiği anlamına gelir. Bu formun yeniden oluşturulması gerektiğini tespit etmek için aşağıdakileri kontrol etmelisiniz:
$form_state['rebuild'] == TRUE;
Nasıl yapıyordum:
$request = $_SERVER['REQUEST_URI']
Orada? _Wrapper_format = drupal_ajax