编辑jqueryajax函数调用PHP函数

编辑jqueryajax函数调用PHP函数,php,jquery,ajax,drupal,Php,Jquery,Ajax,Drupal,我已经给我们的内部网站添加了一些功能,但我很少有这种编码的经验。(我们的公司倒闭了,太好了)。我们正在运行一个Drupal站点,下面是一些自定义代码,用于在站点上显示橙色警报栏(即:午餐室中的Cookies!) 函数警报\u轮询(){ setTimeout(函数(){ ajax({ url:baseUrl+“intranet/alerts/get”, 成功:功能(数据){ 警报设置(数据); }, 数据类型:“html” }); },60000);//每60秒轮询一次 } //设置 功能警报设

我已经给我们的内部网站添加了一些功能,但我很少有这种编码的经验。(我们的公司倒闭了,太好了)。我们正在运行一个Drupal站点,下面是一些自定义代码,用于在站点上显示橙色警报栏(即:午餐室中的Cookies!)

函数警报\u轮询(){
setTimeout(函数(){
ajax({
url:baseUrl+“intranet/alerts/get”,
成功:功能(数据){
警报设置(数据);
}, 
数据类型:“html”
});
},60000);//每60秒轮询一次
}
//设置
功能警报设置(数据){
jQuery(数据).find(“.views行”).each(函数(){
var alertId=jQuery(this.find(“.alert nid”).text();
var alertMsg=“**警报消息**”;
alertMsg+=jQuery(this.find(“.alert msg”).html()+”;
alertMsg+=“”;
如果(!jQuery.cookie(“scl警报-”+警报ID)){
//循环浏览所有页面上的警报,查看此警报当前是否已在页面上
//如果是,则不显示
var displayAlert=true;
jQuery(“.intranet警报包装”).each(函数(){
var onpageAlertId=jQuery(this.attr(“id”);
如果(onpageAlertId.indexOf(“-”+alertId)){displayAlert=false;}
});
if(displayAlert){inject_alert(alertMsg,alertId);}
}
});
alert_poll();//递归设置下一次轮询
}
//将警报消息放到页面上
函数注入警报(警报消息、警报id){
jQuery(“#区域内容”).prepend(“+alert#u msg+”);
jQuery(“.intranet警报包装”).stop().animate({“不透明”:1},700,null,function(){});
}
现在,就我个人而言,我不知道如何让它调用PHP函数。他们希望它能在发布新警报时使标题栏闪烁。我正在尝试使用这一个:它在小型测试中运行良好,但当我尝试将其添加到他们的自定义代码中时,我遇到了以下问题:

  • 我不能只是将其添加到“alertMsg”中,因为它的数据类型为“html”,并且只是将PHP代码作为文本输出
  • 我尝试在一些地方使用$.post,并使用PHP函数调用调用一个文件,但什么也没发生
  • 我尝试将数据类型更改为json,但随后警报没有出现。我想我在这里还有很多事情要做,但我不知道
  • 我试图重写drupal节点的主体(在drupal视图中)以包含PHP调用,但主体也不会执行PHP。我不能使用页眉或页脚,因为正文是由上面的代码直接拉出的
  • 那么,我有什么明显的遗漏吗?我只想在删除新警报时调用“$.titleAlert('New Alert');”


    非常感谢

    如果我没有弄错,并且正确理解了您想要实现的目标,那么您不需要PHP来实现这一点。只需确保已正确初始化Jquery标题警报,并替换此行

    if ( displayAlert ) { inject_alert(alertMsg,alertId); }
    
    用这个

       if ( displayAlert ) { inject_alert(alertMsg,alertId); $.titleAlert("Your message here!");}
    

    如果要添加显示的原始警报文本,请将“您的消息在这里!”更改为jQuery(this).find(“.alert msg”).html()

    Ajax不调用PHP函数。它调用一个PHP页面。然后PHP页面调用该函数并回显。确保在自定义模块中,在hook_菜单下声明了路径“intranet/alerts/get”。我不是一个聪明人。当然,这只是一个Javascript调用,而不是PHP调用。哎呀。我试了一下,可惜还是不行。我能想到的唯一一件事是,包含$titleAlert的.js文件与调用它的我的文件是分开的,但这两个文件都包含在主页上,所有这些都是从主页上调用的。我是否需要将另一个文件包含到我的文件中(我的搜索结果显示Javascript没有这种东西)。你能告诉我们标题中包含js文件的html代码吗?修改代码后,脚本的其余部分按预期工作?(是否显示旧警报?)请检查jquery是否包含在TitleAlert之前或之后。您不必在任何其他javascript中包含js文件,只要确保在TitleAlert之前调用Jquery即可。对不起,我决定在那里病倒几天。警报仍然正常显示,带有新代码。看起来jquery是在标题警报之前调用的(jquery是所有.js文件中首先调用的)。TitleAlert代码在站点内部运行不好。我按照您的建议加入了一些其他自定义代码,效果很好。谢谢你的帮助。我将不得不调试或找到另一种方法,使标题闪光。
       if ( displayAlert ) { inject_alert(alertMsg,alertId); $.titleAlert("Your message here!");}