drupal 7 で ajax を使用した経験のある人はいますか? 私は少し立ち往生しています。
したがって、私のモジュールでは、リンクを出力し、hook_menu() でコールバック関数へのパスをマップします。
コールバック関数では、ajax_command_replace() と ajax_deliver() を使用してコンテンツを更新しました。
まあ、これまでのところ、とても良いです。それはすべて機能します。しかし、複雑な理由から、リンクを使用してもうまくいかないことがわかりました。
代わりに、jQuery ajax の方法を試すことにしました。そこで、クリック イベントを div にアタッチして、クリックされたときに、ロードした JavaScript ファイルで次のようなイベントが実行されるようにします。
jQuery.ajax({
type: 'POST',
url: 'http://path/etc',
});
次に、モジュールでフック メニューを使用して、次のようなコールバック関数へのパスをマップします。
function the_callback($var) {
// a lot of code that gets the right nid to load. This all works...
// and eventually I end up here:
$node = node_load($nid, NULL, false);
if ($node) {
$node_view = node_view($node);
$output = theme("node",$node_view);
$commands = array();
$commands = ajax_command_replace('#content','<div id = "content">' . $output . '</div>';
$page = array('#type' => 'ajax', '#commands' => $commands);
ajax_deliver($page);
}
これは、リンクを取得したときにコンテンツを正常に置き換えていたコードとまったく同じです。しかし、何らかの理由で、jQuery で ajax 呼び出しを呼び出そうとすると、これが機能しません。コールバック関数が呼び出され、正しいものが $output に読み込まれますが、ページは更新されません。
ここで何が起こっているか知っている人はいますか?