【问题标题】:Using Session Variables in AJAX form (Wordpress)以 AJAX 形式使用会话变量 (Wordpress)
【发布时间】:2014-03-19 14:15:10
【问题描述】:

我网站上的用户可以在两个地方存储会话变量: 1. 单个申请人页面的 PHP 表单; 2.所有申请者页面的AJAX表单。 我使用 WP 会话管理器来存储会话变量。 PHP 表单工作正常并将值插入会话: $wp_session[$value] = $applicantid; 现在 AJAX 表单无法识别它,尽管它曾经在 PHP 表单中工作(echo $wp_session[$ID] 有一个值 'checked' 但不会以 AJAX 表单返回):

echo '<input type="checkbox" id="checking" value="'.get_the_ID().'" name="'.get_the_ID().'" style="margin-top:5px;"'; 
echo $wp_session[$ID]; 
echo '/>Connect'; 

此外,当从 AJAX 表单调用下面的函数时,$wp_session 不会被填充(但调用函数时,该部分工作正常,因为它向 AJAX 返回值):

function get_my_option()
{
 if ($_POST && isset($_POST['value'])) {
$value = $_POST['value'];
$applicantid = get_field('applicant id', $value);
$wp_session[$value] = $applicantid;
print($value);
exit();
}
}

我想知道是否有其他方法可以在 AJAX 中存储变量,或者我在这里做错了什么。我想要完成的是,访问者将能够在单个候选人页面上选择候选人,也可以在所有候选人页面上选择候选人,并且这些值将被记住,直到他们想要一次与他们联系。

【问题讨论】:

    标签: php jquery ajax wordpress


    【解决方案1】:

    对我来说存储变量的最佳也是唯一可行的方法是使用 JavaScript Cookie。这用于在 AJAX 函数的成功函数(在本例中为响应值-applicantid)和使用 JS 的 PHP 页面中设置 cookie - 现在可以在 PHP 和 AJAX 之间的任何地方读取 cookie:

    document.cookie = "applicantid"+"="+encodeURIComponent(applicantid)+expires+"; path=/";
    

    这用于按名称读取 cookie 值(不要伪造 IE8 及更早版本不支持 .trim() 函数):

      function getCookie(cname)
      {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i=0; i<ca.length; i++) 
      {
      var c = ca[i].trim();
      if (c.indexOf(name)==0) return decodeURIComponent(c.substring(name.length,c.length));
      }
    return "";
      }
    

    不要忘记包含 path=/ 以便可以在不同页面之间设置和读取 cookie。我希望这可以帮助某人。感谢所有的反对票。

    【讨论】:

      猜你喜欢
      • 2015-10-10
      • 1970-01-01
      • 2012-12-12
      • 2018-04-04
      • 2016-12-23
      • 1970-01-01
      • 2019-06-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多