具有jQuery或Java脚本的引用URL-缓存和引用URL问题

时间:2016-03-24 作者:Domeniko

希望有人能帮我:)

我想做的是,得到第一个访问推荐人并将其发送到表单。我们使用了联系表单7的插件,所以我创建了一个隐藏的输入,获取referer URL,并将referer的值分配给隐藏的输入字段。

在我启用缓存之前,一切都很正常。

这是我使用的函数(以防任何人需要它)

function getRefererPage( $form_tag ){
    if(!isset($_COOKIE[\'external_referrer_cookie\']))
    {

    }
    if ( $form_tag[\'name\'] == \'referer-page\' ) {
        $form_tag[\'values\'][] = $_COOKIE[\'external_referrer_cookie\'];
    }
    return $form_tag;
}
add_filter( \'wpcf7_form_tag\', \'getRefererPage\' );
其中,“referer page”是联系人表单7中隐藏字段的名称和ID。

启用缓存后,我必须考虑jQuery解决方案的Javascript来设置cookie。

我添加了jQuery Cookie插件(https://github.com/carhartl/jquery-cookie) 并添加,然后尝试以下代码的多个不同变体来创建cookie并设置cookie值。

My Goal is:当网站访问者第一次访问时,将cookie值设置为参考url,但随后保留该值,例如,如果访问者是从谷歌访问网站的。然后在网站上的页面上移动,一旦他填写表单,隐藏字段中的值仍然应该是带有参数的谷歌url。

这是我在页脚中的JS代码。php的主题现在。

jQuery(document).ready(function($){  // BEGIN CUSTOM JQUERY NO CONFLICT
    // $.cookie(\'mysite_referrer\', document.referrer);
    // var initreferrer = document.referrer;
    // $.cookie(\'mysite_referrer\', initreferrer);
    //console.log(\'current cookie ref:\'+$.cookie(\'external_referrer_cookie\'));
    //console.log(\'testing\');
    $.cookie(\'external_referrer_cookie\');
    if ($.cookie(\'external_referrer_cookie\') == \'undefined\' ) { 
        // console.log(\'setting cookie for\'+ document.referrer); 
        $.cookie(\'external_referrer_cookie\', document.referrer);
        $(\'.wpcf7-text.referer-page\').val($.cookie(\'wsg_external_referrer_cookie\'));
        console.log(\'current cookie ref:\'+$.cookie(\'wsg_external_referrer_cookie\'));
    }
    // $(\'#referer-page\').val($.cookie(\'external_referrer_cookie\'));
    console.log(\'current cookie out of function ref:\'+$.cookie(\'external_referrer_cookie\'));

    /*
    var cookieName = \'cookietest\';
    $(function() {
        checkCookie();
    });

    function checkCookie() {
        if (document.cookie.length > 0 && document.cookie.indexOf(cookieName + \'=\') != -1) {
                // do nothing, cookie already sent
        } else {
                // handle jQuery animation

                // set the cookie to show user has already visited
                document.cookie = cookieName + "=1";
        }
    }
    */

}); // END CUSTOM JQUERY NO CONFLICT
正如你在评论行中所看到的,我尝试了在几个网站教程中找到的许多方法。我已经为此挣扎了几天了,请帮忙:))

非常感谢。

1 个回复
最合适的回答,由SO网友:Tung Du 整理而成

我没有基于cookie的答案,但我认为这不是敏感数据,您可以尝试localStorage。

jQuery(document).ready(function($){
    var initreferrer = document.referrer;
    if(initreferrer.indexOf(\'yourdomain.com\') === -1 ) { // Check if the referer is your site or not. If not( return -1 ) set the localStorage.
        localStorage.setItem("mysite_referrer", initreferrer);
    }
});
然后,您可以使用javascript函数(而不是像您那样的过滤器)用保存在浏览器localStorage中的referer填充隐藏字段。我们可以通过localStorage.getItem("mystite_referer").

相关推荐

如何使用两个不同文件向jQuery AJAX调用发送php变量

我需要从一个php文件(page.php)向另一个jquery文件(sender.js)中的Ajax调用发送一个私人电子邮件地址。此电子邮件地址必须对用户/或网站不可见,直到用户从wp\\U mail获得自动响应,它必须允许用户答复组织。此电子邮件地址因客户想要联系的组织而异(数百个)。我必须在表单之前从组织获取电子邮件地址,因为它是由javascript生成的。(generated\\u mail.js)发件人。js在页面的标题中被很好地调用。php我在(page.php)中尝试了这段代码——一个组织在