Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.08.2011, 23:02
Профессор
Отправить личное сообщение для (Sandr) Посмотреть профиль Найти все сообщения от (Sandr)
 
Регистрация: 14.10.2010
Сообщений: 376

Создание асинхронного пост запроса
И снова здрасте)
одскажите, что не так в этом коде?

<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>
Ответить с цитированием
  #2 (permalink)  
Старый 04.08.2011, 23:13
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

где onreadystatechange?
Ответить с цитированием
  #3 (permalink)  
Старый 05.08.2011, 22:18
Профессор
Отправить личное сообщение для (Sandr) Посмотреть профиль Найти все сообщения от (Sandr)
 
Регистрация: 14.10.2010
Сообщений: 376

ваый,

Упс, забыл про него.. Попробовал по другому. Взял пример с этого сайта и немножко его переделал, но переменная "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'];
?>
Ответить с цитированием
  #4 (permalink)  
Старый 05.08.2011, 23:20
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

var qw = 'sdg123';
var params = 'qw=' + qw +'&param2=value2';
req.send(params);
Ответить с цитированием
  #5 (permalink)  
Старый 06.08.2011, 23:31
Профессор
Отправить личное сообщение для (Sandr) Посмотреть профиль Найти все сообщения от (Sandr)
 
Регистрация: 14.10.2010
Сообщений: 376

ваый,
не сработало(
Ответить с цитированием
  #6 (permalink)  
Старый 06.08.2011, 23:58
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

Должно работать. Значит, где-то еще косяк.
Ответить с цитированием
  #7 (permalink)  
Старый 07.08.2011, 15:28
Профессор
Отправить личное сообщение для (Sandr) Посмотреть профиль Найти все сообщения от (Sandr)
 
Регистрация: 14.10.2010
Сообщений: 376

ваый,
Не мог бы ты посмотреть этот видео-скрин. Там полностью и код и то, как у меня в браузере всё это изображено. (для просмотра в названии файла нужно убрать .zip)
Вложения:
Тип файла: zip js.wmv.zip (746.9 Кб, 1 просмотров)
Ответить с цитированием
  #8 (permalink)  
Старый 07.08.2011, 16:04
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

А так?
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);
Ответить с цитированием
  #9 (permalink)  
Старый 07.08.2011, 16:11
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

И еще. Логичнее сначала проверять на XMLHttpRequest, а уже потом на ActiveXObject, потому что браузеров, которые используют XMLHttpRequest больше.
function getXmlHttp() {
    var xhr;

    if (window.XMLHttpRequest) {
        xhr = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }

    return xhr;
}

Последний раз редактировалось ваый, 07.08.2011 в 16:14.
Ответить с цитированием
  #10 (permalink)  
Старый 07.08.2011, 18:29
Профессор
Отправить личное сообщение для (Sandr) Посмотреть профиль Найти все сообщения от (Sandr)
 
Регистрация: 14.10.2010
Сообщений: 376

ваый,
добавил эту строку и заработало: req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

Спасибо))
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема при передаче запроса POST martinss AJAX и COMET 7 09.04.2011 23:35
передача в пост checkbox[on/off] в jquery dimiork Элементы интерфейса 5 15.12.2010 22:05
Создание скрипта! Создание диктанта для учеников! Елизавета Работа 10 30.06.2010 21:00
отмена запроса HelpeR AJAX и COMET 5 16.02.2010 16:24
Как "подождать" выполнение асинхронного запроса? WalterScott AJAX и COMET 25 05.06.2009 12:18