Просмотр полной версии : Создание асинхронного пост запроса
И снова здрасте)
одскажите, что не так в этом коде?
<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>
ваый,
Упс, забыл про него.. Попробовал по другому. Взял пример с этого сайта и немножко его переделал, но переменная "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);
Должно работать. Значит, где-то еще косяк.
ваый,
Не мог бы ты посмотреть этот видео-скрин. Там полностью и код и то, как у меня в браузере всё это изображено. (для просмотра в названии файла нужно убрать .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");
Спасибо))
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot