Не могу отправить данные с помощью XMLHttpRequest
Никак не могу отправить данные на обработчик PHP с javasqript кода.
Имею HTML файл с формой в форме есть кнопка, и блок ДИВ отдельно, в ДИВе должно появляться сообщение полученое от обработчика check.php и текст который находится по умолчанию в ДИВе заменяется на тот который получаем от сервера. Вот файл HTML: <form> <input name="button" type="button" value="Отправить" onclick = "getData('check.php', 'targetDiv') "> </form><br> <div id="targetDiv"> <p>Полученое от сервера сообщение появится ЗДЕСЬ!!!</p></div> При нажатии на кнопку вызывается функция getData() из javascript.. javascript вынесен в отдельный файл Вот код javascript: var XMLHttpRequestObject = false;//Создаем переменную var b=5; //Для кроссбраузерности и для старых браузеров создаем конструкцию if (window.XMLHttpRequest) {//Для современных браузеров (если браузер поддерживает XMLHttpRequest объект) XMLHttpRequestObject = new XMLHttpRequest();//то создаем экземпляр объекта с именем XMLHttpRequestObject } else if (window.ActiveXObject) {//Для старых браузером создающих СОМ объект XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP"); } function getData(dataSource, divID) //Предаем в качестве параметра функции источник данных в нашем случае файл data.txt и ID нашего <div> в который будет записываться информация из файла check.php { if(XMLHttpRequestObject) { var obj = document.getElementById(divID); //Присваиваем переменной obj имя объекта ДИВ XMLHttpRequestObject.open("POST", dataSource,true); //Открываем запрос, где POST это метод передачи информации, можно применять другие методы например POST, PUT, HEAD,или PROPFIND и dataSource это адрес URL сервера с данными в нашем случае просто файл data.txt XMLHttpRequestObject.onreadystatechange = function() //Присваиваем свойству "onreadystatechange" функцию которая будет //выполняться при смене состояния объекта. "onreadystatechange" - это Обработчик события, которое происходит при каждой смене состояния объекта. Имя должно быть записано в нижнем регистре. { if (XMLHttpRequestObject.readyState == 4 && //Текущее состояние объекта (0 — не инициализирован, 1 — открыт, 2 — отправка данных, 3 — получение данных и 4 — данные загружены) XMLHttpRequestObject.status == 200) { // HTTP-статус в виде числа (404 — «Not Found», 200 — «OK» и т. д.) obj.innerHTML = XMLHttpRequestObject.responseText; } } XMLHttpRequestObject.send(b); //Отправляет запрос и получает данные } } Ну и собственно обработчик "check.php" который по сути должен получать методом POST в асинхронном режиме данные и вернуть что то назад, а вернуть я хочу значение той же переменной что и получаю то есть цифра 5 должна по сути высветиться , но я никак не могу этого сделать((( <?php $b=$_POST['b']; echo $b; ?> Дело в том что все работает если отправляешь с "check.php" какие либо данные, а вот принимать от не хочет... На 99 % уверен что делаю неправильно ajax запрос в в файле с javascript, подскажите в чем может быть причина? Спасибо заранее!!! |
Если вы хотите послать GET-запрос, то вам достаточно написать check.php?b=5
А вот с POST-запросами, чуточку сложнее читать тут: http://xmlhttprequest.ru/#encoding От того, что вы просто объявили локальную переменную var b=5;, она магическим образом не пошлется на сервер(представьте какой хаос бы творился, если бы все переменные из вашего кода слались бы на сервер) Надо |
XMLHttpRequestObject.send("b=5"); и не забываем указать тип POST'а перед отправкой данных: XMLHttpRequestObject.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" ); |
проблема в отсутствии Content-Type
и XMLHttpRequestObject.send(b) как то так нужно: XMLHttpRequestObject.send("b=5"); XMLHttpRequestObject.send("b=5&f=8"); |
Цитата:
XMLHttpRequestObject.send("b=5"); все равно не получает он данные... сделал проверку... в check.php создал переменную..и попытался просуммировать с переменной которая была отослана... $b=$_POST['b']; $a=3; $c=$a+$b; echo $c; Отсылается только тройка...то есть переменная $a.. Следовательно $b не отсылается.... Не могу понять ничего...подскажите почему???!!! |
Цитата:
Она у меня в коде в методе send() находится...посмотрите.. пробовал и так XMLHttpRequestObject.send(b); и так XMLHttpRequestObject.send("b=5"); Все равно ничего не выходит... |
XMLHttpRequestObject.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" );[/quote] Все решил проблему..огроменное спасибо всем!!! поставил тип заголовка..и все заработало... Спасибо!!! |
Опять столкнулся с проблемой...
дело в том что мне нужно отправлять данные из текстового поля... делаю так... Получаю то что ввели в текстовое поле.. var b=window.document.forms.asa['captch'].value; затем вставляю переменную в метод send() XMLHttpRequestObject.send("b="+b); то есть это равнозначно что было бы так XMLHttpRequestObject.send("b=данные с текстового поля"); Но опять не работает...что опять неправильно сделал??? |
XMLHttpRequestObject.send("b="+escape(b)) |
а лучше юзать encodeURI или encodeURIComponent
|
Часовой пояс GMT +3, время: 06:10. |