【发布时间】:2011-05-30 12:10:39
【问题描述】:
我有下面的 javascript 函数,它通过 ajax 调用将变量“widgets”发送到 php 文件。如果我随后将变量小部件发送回 html 文档并将其回显,它将正确显示在客户端屏幕上。但是当它被发送到 php 时,我尝试将它设置为一个 cookie,并且 cookie 没有被设置。这是javascript函数:
function positions(){
var widgets = '';
var col = document.getElementById('col');
for(i = 0; i < col.childNodes.length; i++) {
var str1 = col.childNodes[i].className;
if(str1 && str1.match('widget')) widgets+='&c[1]['+i+']='+col.childNodes[i].id;
}
xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
xmlhttp.open('POST', '/ajaxwidgetpositions.php', true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("widgetpositions="+widgets);
var e = document.getElementById('widget_data');
e.innerHTML += '<p><a>' +widgets + '</a></p>';
xmlhttp.send(null);
return true;
}
这里是php:
<?php
$widgetpositions = $_POST["widgetpositions"];
setcookie("widgetss", $widgetpositions);
?>
对于它的价值,javascript varibale 'widgets' 具有以下形式:
&c[1][1]=widget_5&c[1][2]=widget_11&c[1][4]=widget_1&c[1][6]=widget_13
&c[2][2]=widget_6&c[2][4]=widget_10&c[2][6]=widget_2&c[2][8]=widget_3
&c[3][3]=widget_7&c[3][5]=widget_12&c[3][7]=widget_8
我删除了一些函数位置代码以使其更具可读性,因此上面的“小部件”比您预期的要长一些,但这就是它所采用的形式。也许这太多了,无法存储在 cookie 中?
有谁知道为什么它没有设置为 cookie?请帮忙。
【问题讨论】:
-
请注意...对于您的 cookie 而言,数据量并不多。 Firefox 和 Opera 过去最高可以达到 4090 左右,而 IE 则更高。不确定这是否是有效信息,但如果 cookie 大于 8190 字节并且根本不会提供请求,Apache 会出错。
标签: php javascript cookies