Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.12.2013, 15:25
Интересующийся
Отправить личное сообщение для kefalia Посмотреть профиль Найти все сообщения от kefalia
 
Регистрация: 16.12.2013
Сообщений: 21

Отправка запроса 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-скрипт.

В чем может быть ошибка?
Ответить с цитированием
  #2 (permalink)  
Старый 18.12.2013, 16:05
Интересующийся
Отправить личное сообщение для kefalia Посмотреть профиль Найти все сообщения от kefalia
 
Регистрация: 16.12.2013
Сообщений: 21

Вопрос снят.
Все работает, но возвращается не нужное значение, а целая страница. Пошла думать, как вытащить из нее значение.
Ответить с цитированием
  #3 (permalink)  
Старый 18.12.2013, 16:12
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от kefalia
Все работает, но возвращается не нужное значение, а целая страница
Это как? Должно вернуться только значение из POST переменной result_cat. Но вы совершаете ошибку и неправильно его передаете.
Сообщение от kefalia
xhr.send(result_cat);
Тут вы передаете xhr.send("true") или xhr.send("false"), а надо:
xhr.send("result_cat=true")

Для этого надо написать
xhr.send("result_cat=" + result_cat);
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #4 (permalink)  
Старый 18.12.2013, 16:26
Интересующийся
Отправить личное сообщение для kefalia Посмотреть профиль Найти все сообщения от kefalia
 
Регистрация: 16.12.2013
Сообщений: 21

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 выводится полный код страницы
Ответить с цитированием
  #5 (permalink)  
Старый 18.12.2013, 16:45
Интересующийся
Отправить личное сообщение для kefalia Посмотреть профиль Найти все сообщения от kefalia
 
Регистрация: 16.12.2013
Сообщений: 21

Rise,
При комментировании данных строк никаких изменений не происходит. И, как я понимаю, в переменной $result_cat хранится переданное посредством POST значение. Или я ошибаюсь?

Если вопрос был в том, есть ли что-то еще кроме вышеуказанного в файле test_selected_category.php, то нет: в этом файле, помимо вышеупомянутого кода, ничего нет.

Если начать не с хвоста, а с головы: сайт сделан на joomla и, соответственно, помимо файла test_selected_category.php есть еще index.php, в котором генерируется шаблон страницы и много других.
В alert попадает абсолютно вся информация со страницы (которая состоит из нескольких подключаемых .php файлов), и я уже второй день не могу понять, почему. Ведь передаваться должно только значение value?

Последний раз редактировалось kefalia, 18.12.2013 в 16:59.
Ответить с цитированием
  #6 (permalink)  
Старый 18.12.2013, 16:54
Интересующийся
Отправить личное сообщение для kefalia Посмотреть профиль Найти все сообщения от kefalia
 
Регистрация: 16.12.2013
Сообщений: 21

Rise,
<select id="category_id" name="category_name" class="inputbox" onchange='postResult(); '>
<option value = "0"/>Все категории</option>				    
				    ...
</select>


Отредактировала предыдущее сообщение
Ответить с цитированием
  #7 (permalink)  
Старый 18.12.2013, 17:08
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

kefalia есть как минимум 4 варианта обработки ajax запрса в joomla
1. Контроллер. Вы можете к существующему подсунуть и добавить свой
2. Плагин обрабатывая событие onAfterInitialise()
3. Передача обработки файлу с отдельной инициализацией фреймворка (костыль)
4. Передача обработки файлу лежащему внутри вашего шаблона (костыль)
5. В Joomla 3.2 встроен компонент ajax
А теперь самое главное, после формирования ответа, вы должны закончить работу приложения.
То есть после ответа должно быть
die;
или
exit;

Последний раз редактировалось Vlasenko Fedor, 18.12.2013 в 17:10.
Ответить с цитированием
  #8 (permalink)  
Старый 23.12.2013, 09:57
Интересующийся
Отправить личное сообщение для kefalia Посмотреть профиль Найти все сообщения от kefalia
 
Регистрация: 16.12.2013
Сообщений: 21

Rise,
Спасибо! Все работает
Ответить с цитированием
  #9 (permalink)  
Старый 23.12.2013, 10:01
Интересующийся
Отправить личное сообщение для kefalia Посмотреть профиль Найти все сообщения от kefalia
 
Регистрация: 16.12.2013
Сообщений: 21

Poznakomlus,
Спасибо за ответ! Пока сделала с помощью "костыля": допиливаю стандартный поиск для Joomshopping. Опыта мало, так что с написанием плагина или контроллера без посторонней помощи вряд ли справлюсь (в те сроки, которые стоят).
Ответить с цитированием
  #10 (permalink)  
Старый 23.12.2013, 10:20
Интересующийся
Отправить личное сообщение для kefalia Посмотреть профиль Найти все сообщения от kefalia
 
Регистрация: 16.12.2013
Сообщений: 21

Rise,
Подскажите еще, пожалуйста, как выбрать данные для передачи в одном запросе из двух разных полей с заданными id?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема при передаче запроса POST martinss AJAX и COMET 7 09.04.2011 23:35
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34
Получение в JavaScript значений переменных, посланных методом POST Ratibor Redoran Общие вопросы Javascript 5 08.06.2010 16:36
JavaScript отправка данных методом POST FORUS Серверные языки и технологии 15 29.05.2010 21:11