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