Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php drupal 7 ajax_交付不起作用_Php_Jquery_Ajax_Drupal_Drupal 7 - Fatal编程技术网

Php drupal 7 ajax_交付不起作用

Php drupal 7 ajax_交付不起作用,php,jquery,ajax,drupal,drupal-7,Php,Jquery,Ajax,Drupal,Drupal 7,有人在Drupal7中使用过ajax吗? 我有点困了 因此,在我的模块中,我使用hook_menu()输出一个链接并将路径映射到回调函数 在回调函数中,我使用ajax_command_replace()和ajax_deliver()来更新内容 嗯,到目前为止,一切都很好。一切正常。但事实证明,由于复杂的原因,使用链接是行不通的 因此,我决定尝试jQueryAjax方式。因此,我将一个click事件附加到一个div,这样当它被单击时,类似这样的内容会在我加载的JavaScript文件中运行: jQ

有人在Drupal7中使用过ajax吗? 我有点困了

因此,在我的模块中,我使用hook_menu()输出一个链接并将路径映射到回调函数

在回调函数中,我使用ajax_command_replace()和ajax_deliver()来更新内容

嗯,到目前为止,一切都很好。一切正常。但事实证明,由于复杂的原因,使用链接是行不通的

因此,我决定尝试jQueryAjax方式。因此,我将一个click事件附加到一个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);

    }
函数调用_回调($var){
//有很多代码可以加载正确的nid。这一切都很有效。。。
//最后我来到这里:
$node=node_load($nid,NULL,false);
如果($node){
$node\u view=node\u view($node);
$output=主题(“节点”,“节点”视图);
$commands=array();
$commands=ajax_command_replace(“#content”,“.$output.”);
$page=array('#type'=>'ajax','#commands'=>$commands);
ajax_交付($page);
}
这与我拥有链接时成功替换内容的代码完全相同。但由于某种原因,当我尝试使用jQuery调用ajax调用时,这不起作用。回调函数被调用,正确的内容被加载到$output中,但页面没有更新


有人知道这里发生了什么吗?

是否缺少一个右括号

$c = ajax_command_replace('#content','<div id = "content">' .$output. '</div>';
$c=ajax_命令_替换('content','.$output';
应该是:

$c = ajax_command_replace('#content','<div id = "content">' .$output. '</div>');
$c=ajax_命令_替换('content','.$output');

主题('node',$node\u视图)返回的$output中可能有一些javascript代码,您需要删除这些代码。 下面是我的ajax函数返回节点渲染内容的一些代码:

  $n = node_load($nid, NULL, FALSE);
  $output =  drupal_render(node_view($n));
  $output = preg_replace('~<script\s+type="text/javascript">.+</script>~is', '', $output);
$n=节点加载($nid,NULL,FALSE);
$output=drupal_渲染(节点_视图($n));
$output=preg_replace(“~.+~is',”$output);

噢,要是有那么简单就好了。