Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GET и POST в запросе XmlHttpRequest 
:(
    Опции темы
ilta
Дата 10.11.2012, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 15.10.2012

Репутация: нет
Всего: нет



Здравствуйте!
У меня такая задача: надо со страницы передать некие данные на сервер в php-файл и получить ответ. Делаю это с помощью XmlHttpRequest.
Вот так работает:
Код

var XMLHTTP;
function main()
{
    var searchString ="q";
    var params = "search=" + encodeURIComponent(searchString);
    XMLHTTP = getXmlHttp();
    XMLHTTP.onreadystatechange = fillRequestResult;

    XMLHTTP.open("GET", "test.php?search=" + encodeURIComponent(searchString), true);
    XMLHTTP.send();

}
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 fillRequestResult()
{
    if (XMLHTTP.readyState == 4)
    {
        var xmltext = XMLHTTP.responseText;
            alert(xmltext);
    }
}

Код
<?php
echo "Hurray!";
?>



Но если get заменить на post, то не работает((
Код

function main()
{
    var searchString = "q";
    var params = "search=" + encodeURIComponent(searchString);
    XMLHTTP = getXmlHttp();
    XMLHTTP.onreadystatechange = fillRequestResult;

    XMLHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    XMLHTTP.setRequestHeader("Content-Length", params.length);
    XMLHTTP.open("POST", "test.php", true);
    XMLHTTP.send(params);
}


В чем может быть причина?

Заранее спасибо всем, кто потратить на проблему немножко своего времени! smile 
PM MAIL   Вверх
skyboy
Дата 10.11.2012, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 3
Всего: 260



какая ошибка в консоли?
у меня в хроме, например, из-за
Код

XMLHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
XMLHTTP.setRequestHeader("Content-Length", params.length);

вылетает
Цитата

Error: INVALID_STATE_ERR: DOM Exception 11
stack: "Error: An attempt was made to use an object that is not, or is no longer, usable.…

PM MAIL   Вверх
ilta
Дата 10.11.2012, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 15.10.2012

Репутация: нет
Всего: нет



Спасибо за ответ!

У меня в FireFox ничего не выдает, но может быть я что-то делаю не так?
А как можно предотвратить возникновение такой ошибки?

Добавлено через 8 минут и 36 секунд
Я очень сильно прошу прощения! Разобралась сама.
Поставила 
XMLHTTP.open("POST", "test.php", true); 
перед 
XMLHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
XMLHTTP.setRequestHeader("Content-Length", params.length);
и все заработало.

Спасибо всем, кто хоть немножно задумался о моей проблеме smile
PM MAIL   Вверх
Amphiluke
Дата 10.11.2012, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 39
Всего: 112



Заголовки запроса можно устанавливать только для запроса, уже в состоянии OPENED (т.е. после вызова .open())

Цитата(http://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html#dom-xmlhttprequest-setrequestheader)

If the state is not OPENED, throw an "InvalidStateError" exception…


PM   Вверх
ilta
Дата 10.11.2012, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 15.10.2012

Репутация: нет
Всего: нет



Спасибо за ответ! smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0465 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.