使用AJAX形式的会话变量(Wordpress)



我网站上的用户可以在两个地方存储会话变量:单个申请人页面的PHP表单;2. AJAX表单为所有申请人页面。我使用WP会话管理器来存储会话变量。PHP表单可以正常工作,并将值插入到会话中:现在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变量,或者如果我在这里做错了什么。我想要实现的是,访问者将能够在单个候选人页面上选择候选人,也可以在所有候选人页面上选择候选人,并且这些值将被记住,直到他们想要一次联系他们。

对我来说最好也是唯一有效的存储变量的方法是使用JavaScript Cookies。这用于在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。我希望这能对某人有所帮助。

最新更新