जवाबों:
Drupal 7 के लिए API में कुछ खास नहीं है, बस सादे PHP का उपयोग करें:
if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
// AJAX request
}
Drupal 8 के लिए, सिम्फनी अनुरोध ऑब्जेक्ट में एक सहायक विधि है:
// 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();
आप अपने हुक में करंट_पैथ () का उपयोग करने पर विचार कर सकते हैं , यदि पथ में 'अजाक्स' शब्द हो।
उदाहरण के लिए:
$current_path = current_path();
if (strpos($current_path, 'ajax') !== false) {
echo 'AJAX request detected!';
exit;
}
चूँकि AJAX अनुरोध की जाँच करने का कोई बुलेट-प्रूफ तरीका नहीं है (जैसा कि HTTP_X_REQUESTED_WITHइसे ख़राब किया जा सकता है), यहाँ URL के आधार पर एक और विकल्प दिया गया है:
if (end((arg())) == 'ajax') {
// AJAX request
}
विचारों के लिए काम करता है (मामले में जब अंतिम यूआरआई आइटम में 'अजाक्स' शब्द होता है)।
यह भी देखें: अगर PHP के साथ AJAX अनुरोध है, तो कैसे जांचें?
ड्रुपल में फॉर्म के साथ काम करने के दायरे में AJAX के अनुरोध का मतलब होगा कि फॉर्म का पुनर्निर्माण होना चाहिए। यह पता लगाने के लिए कि फॉर्म को फिर से बनाया जाना चाहिए, इसके लिए जाँच करनी चाहिए:
$form_state['rebuild'] == TRUE;
मैंने इसका उपयोग कैसे किया:
$request = $_SERVER['REQUEST_URI']
वहां मुझे पता चला? _Wrapper_format = drupal_ajax