/ / drupal 7 jquery ajax呼び出しが動作しないようにする - jquery、ajax、drupal

drupal 7 jquery ajax呼び出しが動作しないようにする - jquery、ajax、drupal

私はajax呼び出しを行い、結果をWebページに書き込むテキストブックの単純なjqueryコードを持っています。それは独力で動作しますが、drupal 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>

これを普通のWebページに入れると、ここで何が起こるのですか?

  1. ID「carrotlink」のリンクをクリックします。
  2. 私はアラート「start ajax call」を取得し、すぐに「ajax call complete」を表示します。
  3. しばらくして、「開始ajaxコールバック」と「ajaxコールバック完了」というアラートが表示されます。
  4. ID「ccbuy」のdivは、新しいコンテンツでフェードアウトおよびフェードインされます。

Drupalページにこのコードを含めると、リンクをクリックすると「開始ajax呼び出し」と「ajax呼び出し完了」アラートが表示されますが、コールバックアラートは表示されず、divは決して変更されません。

私はこれをデバッグするのに何時間も費やしました。上記の単純化されたケースでは明らかに私のjQueryが機能していて、ターゲットリンクが意図したとおりに変更されており、クリックすると目的の関数が呼び出されます。アヤックスの電話はちょうど起こっていません。なぜこれができますか?

PS - 私はdrupalが独自の方法を持っていることを知っていますdrupal_add_js()と同様に、ajaxでテキストを置き換えます。しかし、私はすでにスタンドアロンのWebサイトの一部として使用しようとしている機能を書いています。すべてを再実装するよりもむしろDrupalページに含めるようにしています。

回答:

回答№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);

私はDrupal 6&7でajaxをやっている私の会社のブログのための完全なブログ記事を書いています。 http://clikfocus.com/blog/simple-ajax-example-drupal-6-and-7