Передача данных из JS в PHP - что не так?
Прошу заранее прощения за возможное ламерство, так как с JS только начал знакомиться.
Возникла задача - передать каким-то образом некое значение из скрипта обратно в PHP. Почитал форумы, сделал тестовый пример - и не работает. Как говорится, что я делаю не так? Есть php файл примерно такой (заголовки опускаю)
<script src="test.js"></script>
<script type="text/javascript">
var x = 3;
var php_source = "http://mysite/test.php";
</script>
<img src="http://mysite.ru/test.png" onclick="testing();">
<?php
if (isset($_POST['count']))
{
$count=$_POST['count'];
echo 'Счетчик - '.$count;
} else { echo 'Упс';}
?>
И есть этот test.js
function testing() {
var http_request = false;
if (window.XMLHttpRequest)
{ // Mozilla, Safari, ...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType)
{
http_request.overrideMimeType('text/xml');
// Читайте ниже об этой строке
}
}
else if (window.ActiveXObject)
{ // IE
try
{
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try
{
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request)
{
alert('Не вышло :( Невозможно создать экземпляр класса XMLHTTP ');
return false;
}
http_request.onreadystatechange = function() { alertContents(http_request); };
http_request.open('POST', php_source, true);
http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
http_request.send('count='+x);
}
function alertContents(http_request) {
if (http_request.readyState ==4) {
}
}
По идее, мне бы хотелось, что в переменную $count из массива $_POST попала бы ранее определенная переменная х - но вместо этого выводится текст "Упс", т.е. $_POST['count'] не определен. Где ошибка закралась? Спасибо! |
Гораздо проще, имхо, через $_GET передать данные...
|
1. Можно просто прописать var http_request = XMLHttpRequest();
2. Делай две проверки, if(http_request.readyState == 4) и if(http_request.status == 200); |
А все таки - почему может не работать данный код?
Проверки или там GET - это здорово, но почему так-то не работает? |
Цитата:
// params = "count=2" (string)
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
*!*
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");
*/!*
http.send(params);
|
Добавил в меру своего разумения указанные строчки...и все равно не работает.
Судя по FireBug, POST запрос проходит успешно, только вот в php файле получить переменную count не получается. Плиз хелп! Просто не понимаю, в чем косяк - вроде ж должно работать. |
что-нибудь пересылается в запросе?
|
Цитата:
Если в самом скрипте поставить вывод переменной "х", то она отображается правильно. В файрбаге POST запрос без ошибок показывается, но в php, который этот запрос передается, ничего нет. Т.е. похоже, что не пересылается - но как это точно отловить, я не знаю, увы. |
это значит вот это :
Цитата:
тогда в начале php скрипта проверьте, чо тама переслалось это можно сделать так.
echo "<pre>";
print_r( $_POST );
die('</pre>');
|
Цитата:
Файрбаг пишет: POST http://www.site.ru/test.php [HTTP/1.1 200 OK 16мс] Т.е. вроде бы все успешно передалось. А в php приходит пустой $_POST - ваш код проверки показывает Array () |
| Часовой пояс GMT +3, время: 02:29. |