У меня есть функция javascript, которая отправляет переменную widgets в php-файл с помощью ajax-вызова. Если я затем отправлю виджеты с переменными обратно в 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? Пожалуйста, помогите.