Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.04.2015, 04:58
Новичок на форуме
Отправить личное сообщение для EvgenPERM Посмотреть профиль Найти все сообщения от EvgenPERM
 
Регистрация: 09.04.2015
Сообщений: 4

Ошибка при отправке заголовка setRequestHeader
Всем доброго времени суток!

Помогите решить проблему:

Отправляю на сервер id категории и бренда товаров для их дальнейшего вывода в каталоге магазина. Делаю это с помощью ajax, методом POST. Соответственно отправляю заголовки с имитацией формы для того чтобы php записал эти id-шники их в массив $_POST:
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.setRequestHeader("Content-Length", searchStr.length);

Общий запрос выглядит так:

function searchBrand(category, brand)
{  
    var searchStr = "category=" + category + "&" + "brand=" + brand;
    alert(searchStr);
    
    var req = getXmlHttpRequest();
    req.onreadystatechange = function()
        {
            if (req.readyState != 4) return;
            var ulResult = document.getElementById('catalog-list');
            while (ulResult.hasChildNodes())
				ulResult.removeChild(ulResult.lastChild);  
        }
        req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        req.setRequestHeader("Content-Length", searchStr.length);
        
        req.open("POST", "index.php", true);
        req.send(searchStr);
}


При запуске выдает ошибку:
Uncaught InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.
И дает ссылку на 14-ую строку скрипта.

В чем может быть дело?
Ответить с цитированием
  #2 (permalink)  
Старый 09.04.2015, 05:44
Новичок на форуме
Отправить личное сообщение для EvgenPERM Посмотреть профиль Найти все сообщения от EvgenPERM
 
Регистрация: 09.04.2015
Сообщений: 4

Мл, вот я балбес - отправляю заголовки перед открытием соединения...

Решение проблемы:
req.open("POST", "index.php", true); // открываем
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // пошли заголовки
req.setRequestHeader("Content-Length", searchStr.length);
req.send(searchStr); // отправляем данные
Ответить с цитированием
  #3 (permalink)  
Старый 09.04.2015, 05:46
Новичок на форуме
Отправить личное сообщение для EvgenPERM Посмотреть профиль Найти все сообщения от EvgenPERM
 
Регистрация: 09.04.2015
Сообщений: 4

Правда теперь вылазит:
Refused to set unsafe header "Content-Length" - отказался устанавливать небезопасный заголовок

В чем может быть дело?
Ответить с цитированием
  #4 (permalink)  
Старый 10.04.2015, 18:46
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Кто вас вообще такому баяну научил? Content-Length приходит с сервера, а серверу нужны данные по каждому куску, насколько я помню, а помню я мало, потому что клал делать все это вручную, в то время как космические корабли бороздят просторы вселенной, чего и вам желаю.

Делайте форму, в нее профтыкайте что угодно, в том числе файлы из объекта и вперде.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проверка полей при отправке all4me1982 Общие вопросы Javascript 6 17.03.2015 14:02
Ошибка (spawn ENOENT) при использовании библиотеки ImageMagick на Windows uWeb AJAX и COMET 1 03.10.2014 20:16
setRequestHeader ошибка kotlovd AJAX и COMET 2 04.11.2012 22:58
Ошибка при добавлении обработчика к событию Riim Events/DOM/Window 32 19.01.2010 14:17
При отправке страницы на печать е подключаються стили! Что посоветуете! bozeak Общие вопросы Javascript 3 07.12.2009 18:04