Создание асинхронного пост запроса
И снова здрасте)
одскажите, что не так в этом коде? <script> function myf() { var loadContent = document.getElementById('content'); var request = XMLHttpRequest(); request.open("POST", "/1.php"); request.send(null) if(request.status == 200) loadContent.innerHTML = request.responseText; else loadContent.innerHTML = "Error" + request.status + " : " + request.statusText; } </script> <div id="content"></div> <a href="javascript:void(0)" onclick="myf()">Загрузить</a> |
где onreadystatechange?
|
ваый,
Упс, забыл про него.. Попробовал по другому. Взял пример с этого сайта и немножко его переделал, но переменная "qw" не передаётся через метод пост, хотя всё остальное загружается. Вот содержание скрипта: <script> function getXmlHttp(){ var xmlhttp; try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } } if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp = new XMLHttpRequest(); } return xmlhttp; } function vote() { var req = getXmlHttp() var statusElem = document.getElementById('content'); req.onreadystatechange = function() { if (req.readyState == 4) { statusElem.innerHTML = req.statusText; // показать статус (Not Found, ОК..) if(req.status == 200) { statusElem.innerHTML = "Ответ сервера: "+req.responseText; } } } req.open('POST', '/1.php', true); var qw = 'sdg123'; req.send(qw); // отослать запрос statusElem.innerHTML = 'Ожидаю ответа сервера...' } </script> <div id="content"></div> <a href="javascript:void(0)" onclick="vote()">Загрузить2</a> А это содержание файла 1.пхп <?php echo 'Данные загружены!<br>'; echo 'Пост запрос переменной qwerty - '.$_POST['qw']; echo '<br>Гет запрос переменной qwerty - '.$_GET['qw']; ?> |
var qw = 'sdg123'; var params = 'qw=' + qw +'¶m2=value2'; req.send(params); |
ваый,
не сработало( |
Должно работать. Значит, где-то еще косяк.
|
Вложений: 1
ваый,
Не мог бы ты посмотреть этот видео-скрин. Там полностью и код и то, как у меня в браузере всё это изображено. (для просмотра в названии файла нужно убрать .zip) |
А так?
var req = getXmlHttp(); var statusElem = document.getElementById('content'); req.onreadystatechange = function() { if (req.readyState == 4) { statusElem.innerHTML = req.statusText; // показать статус (Not Found, ОК..) if(req.status == 200) { statusElem.innerHTML = "Ответ сервера: "+req.responseText; } } } *!*req.open('POST', '/1.php', true);*/!* *!*req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");*/!* var qw = 'qw=123123'; req.send(qw); |
И еще. Логичнее сначала проверять на XMLHttpRequest, а уже потом на ActiveXObject, потому что браузеров, которые используют XMLHttpRequest больше.
function getXmlHttp() { var xhr; if (window.XMLHttpRequest) { xhr = new XMLHttpRequest(); } else if (window.ActiveXObject) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } return xhr; } |
ваый,
добавил эту строку и заработало: req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); Спасибо)) |
Часовой пояс GMT +3, время: 02:21. |