मैं Drupal के अंदर AJAX अनुरोध का पता कैसे लगा सकता हूं?


18

मैं AJAX अनुरोध का पता लगाने के Drupal तरीके की तलाश में हूं। मुझे हुक_फॉर्म_लटर (AJAX समर्थन के साथ विचार एम्बेड करना) के अंदर यह जांचना होगा


यह मदद कर सकता है: drupal.stackexchange.com/questions/86939/…
shasi kanth

जवाबों:


28

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();

मैं यह जांचने की कोशिश कर रहा हूं कि छवि अपलोड बटन से आने वाला अनुरोध क्या है। 'HTTP_X_REQUESTED_WITH' $ सर्वर सरणी में मौजूद नहीं है। कोई विचार?
मौनी

बचाया घंटे !! बहुत सराहना की !!
जयकंदरी

धन्यवाद, @ क्लाइव!
aserww106

9

आप अपने हुक में करंट_पैथ () का उपयोग करने पर विचार कर सकते हैं , यदि पथ में 'अजाक्स' शब्द हो।

उदाहरण के लिए:

$current_path = current_path();
if (strpos($current_path, 'ajax') !== false) {
    echo 'AJAX request detected!';
    exit;
}

3
95% काम कर सकते हैं, लेकिन ऐसा लगता है कि यह गारंटी नहीं है। सबसे पहले यह केवल कन्वेंशन नहीं है कि स्ट्रिंग 'अजाक्स' अजाक्स अनुरोधों के लिए पथ का हिस्सा है? कोई भी कंट्रिब मॉड्यूल किसी भी मार्ग को चुन सकता है। दूसरी बात यह नहीं है कि एक गैर-अजाक्स पथ में स्ट्रिंग 'अजाक्स' शामिल नहीं हो सकता है? उदाहरण के लिए 'myajaxpage' के दृश्य या पैनल पृष्ठ के लिए पथ निर्धारित किया जा सकता है?
एडम ऑक्ट

0

चूँकि AJAX अनुरोध की जाँच करने का कोई बुलेट-प्रूफ तरीका नहीं है (जैसा कि HTTP_X_REQUESTED_WITHइसे ख़राब किया जा सकता है), यहाँ URL के आधार पर एक और विकल्प दिया गया है:

if (end((arg())) == 'ajax') {
  // AJAX request
}

विचारों के लिए काम करता है (मामले में जब अंतिम यूआरआई आइटम में 'अजाक्स' शब्द होता है)।

यह भी देखें: अगर PHP के साथ AJAX अनुरोध है, तो कैसे जांचें?


मुझे लगता है कि फाइल / अजाक्स और मीडिया / अजाक्स के मामले में URL पर अतिरिक्त पैरामीटर होने की संभावना है, इसलिए अजाक्स अंत में नहीं होगा। जैसे / फ़ाइल / अजाक्स / फ़ील्ड_सियर_चित्र / und / 0 /
फॉर्म-

0

ड्रुपल में फॉर्म के साथ काम करने के दायरे में AJAX के अनुरोध का मतलब होगा कि फॉर्म का पुनर्निर्माण होना चाहिए। यह पता लगाने के लिए कि फॉर्म को फिर से बनाया जाना चाहिए, इसके लिए जाँच करनी चाहिए:

$form_state['rebuild'] == TRUE;

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.