Передача данных из 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, время: 15:51. |