/ / drupal 7 jquery AJAX कॉल को काम करने से रोकता है - jquery, AJAX, drupal

ड्रूपल 7 काम से jquery AJAX कॉल रोकता है - jquery, AJAX, Drupal

मेरे पास कुछ पाठ्यपुस्तक-सरल jquery कोड है जो AJAX कॉल करता है और परिणाम को वेब पेज पर लिखता है। यह अपने आप पर काम करता है, लेकिन जब ड्रोपल 7 साइट पर किसी पृष्ठ में शामिल नहीं होता है।

कोड को कस्टम मॉड्यूल के माध्यम से शामिल किया जा रहा है जो hook_block_view_alter () का उपयोग कर पृष्ठ पर लिखता है। यह रहा:

<script type="text/javascript" src="/path/to/jquery.js"></script>
<script>
$(document).ready(function(){
$("#carrotlink").click(function(event){
event.preventDefault();
alert("starting ajax call.");
$.ajax({
type: "GET",
url: "http://my.datasource.page/",
data: "parameter=5",
success: function(data) {
alert("starting ajax callback");
result = "The oracle says: " + data;
jQuery("#ccbuy").fadeOut( function() { jQuery("#ccbuy").html(result); jQuery("#ccbuy").fadeIn(); });
alert("ajax callback complete");
}
});
alert("ajax call complete");
});
});
</script>

अगर मैं इसे नियमित वेब पेज में डालता हूं, तो यहां क्या होता है:

  1. मैं आईडी "carrotlink" के साथ लिंक पर क्लिक करें।
  2. मुझे "अजाक्स कॉल पूर्ण" द्वारा तुरंत "अजाक्स कॉल शुरू करने" के बारे में एक चेतावनी मिलती है।
  3. एक पल बाद में, मुझे चेतावनी मिलती है "एजेक्स कॉलबैक शुरू करना" और "अजाक्स कॉलबैक पूर्ण"।
  4. आईडी "ccbuy" के साथ div fades बाहर और नई सामग्री के साथ fades।

जब मैं एक ड्रूपल पेज में यह कोड शामिल करता हूं, तो लिंक पर क्लिक करने से "एजेक्स कॉल शुरू करना" और "AJAX कॉल पूर्ण" अलर्ट सामने आते हैं, लेकिन मुझे कॉलबैक अलर्ट कभी नहीं मिलते हैं, और div कभी नहीं बदलता है।

मैंने इसके परिणामस्वरूप डीबग करने की कोशिश कर रहे घंटे बिताए हैंऊपर सरलीकृत मामले में। स्पष्ट रूप से मेरा jquery काम कर रहा है, लक्षित लिंक को इरादे के रूप में बदला जा रहा है, और जब मैं इसे क्लिक करता हूं तो इच्छित फ़ंक्शन को कॉल किया जाता है। अजैक्स कॉल बस नहीं हो रहा है। यह क्यों हो सकता है?

पीएस - मुझे पता है कि ड्रूपल के लिए अपनी विधियां हैंAJAX के साथ पाठ को बदलना, साथ ही drupal_add_js ()। लेकिन मैंने पहले से ही उन कार्यों को लिखा है जिन्हें मैं एक स्टैंडअलोन वेबसाइट के हिस्से के रूप में उपयोग करने की कोशिश कर रहा हूं, और मैं उन्हें सबकुछ को फिर से लागू करने के बजाय ड्रोपल पेज में शामिल नहीं करता हूं। और ऐसा लगता है कि यह काम करने के करीब है!

उत्तर:

उत्तर № 1 के लिए 1

आप व्यवहार व्यवहार रैपर गायब हो सकते हैं। व्यवहार और व्यवहार में पाठ को लपेटने का प्रयास कोड संलग्न करें:

(function ($) {
Drupal.behaviors.ajax_example = {
attach:function (context) {

// If the site name is present set it to the username.
if ($("#site-name", context).length) {
$.ajax({
url: "/ajax/username",
success: function(data) {

// Change site name to current user name.
$("#site-name a span").html(data + ".com");
}
});
}
}
}
})(jQuery);

मैंने ड्रूपल 6 और 7 में अजाक्स करने पर मेरी कंपनी ब्लॉग के लिए एक पूर्ण ब्लॉग पोस्ट लिखा है जो कुछ मदद भी हो सकता है: http://clikfocus.com/blog/simple-ajax-example-drupal-6-and-7