Отправка запроса POST Javascript
Добрый день. Осваиваю отправку post-запросов посредством javascript. После изучения документации и форумов для получения id выбранного пользователем значения из списка <select> было написано следующее:
function postResult(){ var xhr = new XMLHttpRequest(); var sel_cat=document.getElementById("category_id").value; var result_cat = encodeURIComponent(sel_cat); xhr.open("POST", "test_selected_category.php", true) xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded') xhr.send(result_cat); xhr.onreadystatechange = function (){ if(xhr.readyState == 4){ if(xhr.responseText == "true"){ alert("YES!"); } else { alert("NO!"); } xhr.result_cat; } } } test_selected_category.php <?php $result_cat=$_POST['result_cat']; echo $result_cat; ?> Стабильно возвращается NO, то есть, никакого результата сервером не присылается. Файл test_selected_category.php доступен для чтения и записи и лежит в той же директории, где и index.php, в котором прописан js-скрипт. В чем может быть ошибка? |
Вопрос снят.
Все работает, но возвращается не нужное значение, а целая страница. Пошла думать, как вытащить из нее значение. :) |
Цитата:
Цитата:
xhr.send("result_cat=true") Для этого надо написать xhr.send("result_cat=" + result_cat); |
function postResult(){ var xhr = new XMLHttpRequest(); var sel_cat=document.getElementById("category_id").value; var result_cat = encodeURIComponent(sel_cat); xhr.open("POST", "test_selected_category.php", true) xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded') xhr.send("result_cat=" + result_cat); xhr.onreadystatechange = function (){ if(xhr.readyState == 4){ alert(xhr.responseText); xhr.result_cat; } } } При подобном положении вещей в alert выводится полный код страницы :) |
Rise,
При комментировании данных строк никаких изменений не происходит. И, как я понимаю, в переменной $result_cat хранится переданное посредством POST значение. Или я ошибаюсь? Если вопрос был в том, есть ли что-то еще кроме вышеуказанного в файле test_selected_category.php, то нет: в этом файле, помимо вышеупомянутого кода, ничего нет. Если начать не с хвоста, а с головы: сайт сделан на joomla и, соответственно, помимо файла test_selected_category.php есть еще index.php, в котором генерируется шаблон страницы и много других. В alert попадает абсолютно вся информация со страницы (которая состоит из нескольких подключаемых .php файлов), и я уже второй день не могу понять, почему. Ведь передаваться должно только значение value? |
Rise,
<select id="category_id" name="category_name" class="inputbox" onchange='postResult(); '> <option value = "0"/>Все категории</option> ... </select> Отредактировала предыдущее сообщение :) |
kefalia есть как минимум 4 варианта обработки ajax запрса в joomla
1. Контроллер. Вы можете к существующему подсунуть и добавить свой 2. Плагин обрабатывая событие onAfterInitialise() 3. Передача обработки файлу с отдельной инициализацией фреймворка (костыль) 4. Передача обработки файлу лежащему внутри вашего шаблона (костыль) 5. В Joomla 3.2 встроен компонент ajax А теперь самое главное, после формирования ответа, вы должны закончить работу приложения. То есть после ответа должно быть die;или exit; |
Rise,
Спасибо! Все работает :) |
Poznakomlus,
Спасибо за ответ! Пока сделала с помощью "костыля": допиливаю стандартный поиск для Joomshopping. Опыта мало, так что с написанием плагина или контроллера без посторонней помощи вряд ли справлюсь (в те сроки, которые стоят). |
Rise,
Подскажите еще, пожалуйста, как выбрать данные для передачи в одном запросе из двух разных полей с заданными id? |
Часовой пояс GMT +3, время: 12:52. |