/ / drupal 7 zabraňuje jquery ajax volanie z práce - jquery, ajax, drupal

drupal 7 zabraňuje jquery ajax volanie z práce - jquery, ajax, drupal

Mám nejaký učebnicový jednoduchý jquery kód, ktorý robí ajax volanie a zapíše výsledok na webovú stránku. Funguje samostatne, ale nie vtedy, keď sa nachádza na stránke na stránke drupal 7.

Kód je zahrnutý prostredníctvom vlastného modulu, ktorý zapisuje stránku pomocou hook_block_view_alter (). Tu je:

<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>

Ak som to uviedol na bežnú webovú stránku, tu sa stane:

  1. Kliknem na odkaz s ID "carrotlink".
  2. Dostávam upozornenie "po spustení ajax hovoru", za ktorým nasleduje okamžite "ajax call complete".
  3. O chvíľu neskôr dostanem upozornenia "spustenie ajax callback" a "ajax callback complete".
  4. ID divu s ID "ccbuy" vybledne a zmizne s novým obsahom.

Keď tento kód pridám na drupal stránku, kliknutím na odkaz zobrazíte upozornenia "spustiť ajax call" a "ajax call complete", ale nikdy som nedostal upozornenia na spätné volanie a div sa nikdy nezmení.

Strávil som hodiny, keď som sa snažil túto chybu odstrániťv zjednodušenom prípade. Je zrejmé, že moje jquery funguje, cieľový odkaz sa mení podľa určenia a zamýšľaná funkcia sa nazýva, keď na ňu kliknem. Ajax volanie sa práve nedeje. Prečo by to mohlo byť?

PS - Viem, že drupal má svoje vlastné metódynahrádzanie textu cez ajax, ako aj drupal_add_js (). Ale už som napísal funkcie, ktoré sa pokúšam používať ako súčasť samostatnej webovej stránky, a radšej by som ich zahrnul do drupalovej stránky, než aby som všetko znovu použil. A zdá sa, že je to tak blízko k práci!

odpovede:

1 pre odpoveď č. 1

Možno vám chýba obálky správania. skúste obaliť text v správaní a správaní pripojiť kód:

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

Napísal som úplný príspevok blogu pre môj firemný blog o tom, že ajax v Drupal 6 & 7, ktorý môže byť aj nejaká pomoc: http://clikfocus.com/blog/simple-ajax-example-drupal-6-and-7