1

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 に読み込まれますが、ページは更新されません。

ここで何が起こっているか知っている人はいますか?

4

2 に答える 2

0

閉じ括弧がありませんか?

$c = ajax_command_replace('#content','<div id = "content">' .$output. '</div>';

次のようにする必要があります。

$c = ajax_command_replace('#content','<div id = "content">' .$output. '</div>');
于 2013-06-28T22:41:53.920 に答える