есть такая страничка -
index.php
//........
if(isset($_POST["subject"]))
$subj = $_POST["subject"];
if(isset($_POST["contacts"]))
$cont = $_POST["contacts"];
if(isset($_POST["problem"]))
$problem = $_POST["problem"];
$rep_data=array('subject'=>urlencode($subj),'contacts'=>urlencode($cont),'problem'=>urlencode($problem));
echo var_dump($rep_data);
echo '<script>var report_data = '.json_encode($rep_data).'</script>';
//............
в фаерфоксе и опере код страницы получается следующим
array(3) {
["subject"]=>
string(5) "ozzzz"
["contacts"]=>
string(5) "ozzzz"
["problem"]=>
string(17) "asfgbhfshsdngbsdf"
}
<script>var report_data = {"subject":"ozzzz","contacts":"ozzzz","problem":"asfgbhfshsdngbsdf"}</script><script>
а в хромиуме:
array(3) {
["subject"]=>
string(0) ""
["contacts"]=>
string(0) ""
["problem"]=>
string(0) ""
}
<script>var report_data = {"subject":"","contacts":"","problem":""}</script><script>
при этом вывод странички одинаковый 0_о
Далее на страничке нужно сразу перенаправить полученный пост. Делаю так:
function createRequestObject() {
var request = null;
try {
request=new ActiveXObject('Msxml2.XMLHTTP');
} catch (e){}
if(!request) try {
request=new ActiveXObject('Microsoft.XMLHTTP');
} catch (e){}
if(!request) try {
request=new XMLHttpRequest();
} catch (e){}
return request;
}
/*
Кодирование данных (простого ассоциативного массива вида
{ name : value, ...} в URL-escaped строку (кодировка UTF-8)
*/
function urlEncodeData(data) {
var query = [];
if (data instanceof Object) {
for (var k in data) {
query.push(encodeURIComponent(k) + "=" +
encodeURIComponent(data[k]));
}
return query.join('&');
} else {
return encodeURIComponent(data);
}
}
/*
Выполнение POST-запроса
url - адрес запроса
data - параметры в виде простого ассоциативного массива
{ name : value, ...}
callback - (не обяз.) callback-функция,
которая будет вызвана после выполнения запроса
и получения ответа от сервера
*/
function my-callback(){alert("ответ получен");}
function serverRequest(url, data, callback) {
var request = createRequestObject();
if(!request) return false;
request.onreadystatechange = function() {
if(request.readyState == 4 && callback) callback(request);
};
request.open('POST', url, true);
if (request.setRequestHeader)
request.setRequestHeader("Content-Type",
"application/x-www-form-urlencoded");
request.send(urlEncodeData(data));
return true;
}
alert(report_data); //просто глянуть создался ли массив
serverRequest("poster.php",report_data,"my-callback");
Причем алерт ни в одном браузере не выскакивает(javascript включен), даже просто со строкой, ошибок тоже не показывает.
И посему два вопроса:
- Что за глюк в хромиуме с выводом вардамп?
- Где ошибка в скрипте?
Подскажите пожалуйста! Уже кучу манов перерыл с этим post.