编辑Jquery Ajax函数来调用PHP函数

时间:2015-01-20 21:45:44

标签: php jquery ajax drupal

我已经获得了我们的内部网站点以添加一些功能,但我对这种编码的经验很少。 (我们公司破产了。很棒)。我们正在运行Drupal站点,以下是一些自定义代码,用于在站点上显示橙色警报栏(即:午餐室中的Cookie!)

function alert_poll() {
    setTimeout(function(){
        jQuery.ajax({ 
            url: baseUrl + "intranet/alerts/get",
            success: function(data){
                alert_setup(data);
            }, 
            dataType: "html"

        });
    }, 60000); // Polling every 60 seconds

}

// Setup
function alert_setup(data) {
    jQuery(data).find(".views-row").each(function() {
        var alertId = jQuery(this).find(".alert-nid").text();
        var alertMsg = "<span class='alert-label'>** ALERT MESSAGE **</span> <span class='alert-msg'>";
        alertMsg += jQuery(this).find(".alert-msg").html() + "</span>";
        alertMsg += "<a href='#' class='alert-hide'><span>Hide Alert</span></a>";
        if ( !jQuery.cookie("scl-alert-" + alertId) ) {
            // Loop through all on-page alerts to see if this one is currently on the page already
            // if so, don't display
            var displayAlert = true;
            jQuery(".intranet-alert-wrap").each(function() {
                var onpageAlertId = jQuery(this).attr("id");
                if ( onpageAlertId.indexOf("-" + alertId) ) { displayAlert = false; }
            });
            if ( displayAlert ) { inject_alert(alertMsg,alertId); }
        }
    });
    alert_poll(); //Setup the next poll recursively
}

// Drop alert message onto page
function inject_alert(alert_msg,alert_id) {
    jQuery("#zone-content").prepend("<div class='intranet-alert-wrap' id='alert-" + alert_id + "' style='opacity:0;'><div class='intranet-alert'>" + alert_msg + "</div></div>");
    jQuery(".intranet-alert-wrap").stop().animate( { "opacity": 1}, 700, null, function(){});
}

现在,对于我的生活,我无法弄清楚如何让它调用PHP函数。他们希望它在发布新警报时使标题栏闪烁。我正在尝试使用这个:http://heyman.info/2010/sep/30/jquery-title-alert/它在小型测试中工作正常,但当我尝试将其添加到自定义代码时,我遇到了以下问题:

  1. 我不能将它添加到'alertMsg',因为它的数据类型为'html',只是将PHP代码作为文本吐出。
  2. 我尝试在几个地方使用$ .post并使用PHP函数调用调用文件,但没有任何反应。
  3. 我尝试将dataType更改为json,但之后警报才会出现。我想我还有更多工作要做,但我不知道。
  4. 我试图重写drupal节点的主体(在drupal视图中)以包含PHP调用,但是主体也不会执行PHP。我不能使用页眉或页脚,因为上面的代码直接拉出了正文。
  5. 那么,有什么东西显而易见吗?我只想要这个电话“$ .titleAlert('New Alert');”在删除新警报时发生。

    非常感谢!

1 个答案:

答案 0 :(得分:0)

如果我没有弄错,并且正确理解你想要实现的目标,那么你就不需要PHP了。只需确保您初始化Jquery Title Alert correclty,并替换此行

if ( displayAlert ) { inject_alert(alertMsg,alertId); }

用这个

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

如果您想要添加显示的原始提醒文字,请在此处更改&#34;您的留言!&#34;到jQuery(this).find(&#34; .alert-msg&#34;)。html()