Javascript.RU

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

получение скриптом данных со всей формы по onchange
Всем привет! Помогите пожалуйста, делаю ajax-фильтр продуктов по нескольким параметрам, взяв за основу один из примеров. Собственно с одним параметром проблем нет.

Форма примерно такая:
Код:
<form name="form"  id="form">
<select name="size" id="size" onchange="showInfo()">
  <option....</option>
 </select>
<select name="weight" id="weight" onchange="showInfo()">
  <option....</option>
 </select>
</form>

Скрипт, обрабатывающие данные для отправки запроса на сервер такой:

function showInfo() {
	var size = document.getElementById('size').value;	
	var weight = document.getElementById('weight').value;
...
тра-та-та
...
        xmlhttp.open("GET","getinfo.php?size="+size+"&"+weight,true);
        xmlhttp.send();
}


Но параметров будет еще много, и не хотелось бы под каждый делать свою переменную а потом их соединять и допиливать яваскрипт при добавлении полей.

Нужно чтобы скрипт принял все данные с формы и отправил их дальше по xmlhttp.open в формате getinfo.php?var1=a&var2=b$var3=c... и т.п. независимо от количества полей (переменных) в форме.

Последний раз редактировалось Greider, 13.02.2018 в 10:28.
Ответить с цитированием
  #2 (permalink)  
Старый 12.02.2018, 17:15
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,815

// © [url]https://stackoverflow.com/questions/11661187/form-serialize-javascript-no-framework[/url]
var form = document.querySelector('form');
var data = new FormData(form);
var req = new XMLHttpRequest();
req.send(data);
Ответить с цитированием
  #3 (permalink)  
Старый 12.02.2018, 17:40
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Greider,
А без скрипта?
Атрибут метод
Ответить с цитированием
  #4 (permalink)  
Старый 12.02.2018, 17:48
Интересующийся
Отправить личное сообщение для Greider Посмотреть профиль Найти все сообщения от Greider
 
Регистрация: 30.09.2010
Сообщений: 20

Сообщение от Nexus Посмотреть сообщение
// © [url]https://stackoverflow.com/questions/11661187/form-serialize-javascript-no-framework[/url]
var form = document.querySelector('form');
var data = new FormData(form);
var req = new XMLHttpRequest();
req.send(data);
хм... прикольно, правда не очень понимаю, где указать адрес назначения и можно ли отправить по GET (чтобы ссылки на результат фильтрации были рабочими, хотя это не слишком обязательно...)

Кстати по этой же ссылке в другом ответе есть довольно большой код, чтобы в лоб перебрать и упорядочить данные с формы для отправки по GET. Я так понял он как раз должен мне подойти, но получается, какого-то стандартного решения для этого нет?

Сообщение от Dilettante_Pro
А без скрипта?
Атрибут метод
В смысле без скрипта? "А что, а можно было" ?

Последний раз редактировалось Greider, 12.02.2018 в 17:58.
Ответить с цитированием
  #5 (permalink)  
Старый 12.02.2018, 18:13
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,815

Сообщение от Greider
правда не очень понимаю, где указать адрес назначения и можно ли отправить по GET
https://learn.javascript.ru/ajax-xml...BD%D0%B8%D1%8F
Ответить с цитированием
  #6 (permalink)  
Старый 13.02.2018, 10:26
Интересующийся
Отправить личное сообщение для Greider Посмотреть профиль Найти все сообщения от Greider
 
Регистрация: 30.09.2010
Сообщений: 20

Ну вроде так и есть... но не работает (

function showInfo() {
	
	var form = document.querySelector('form');
	var str = new FormData(form);
	
    if (str == "") {
        document.getElementById("txtHint").innerHTML = "";
        return;
    } else {
        if (window.XMLHttpRequest) {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        } else {
            // code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                document.getElementById("txtHint").innerHTML = this.responseText;
            }
        };
        xmlhttp.open("GET","getinfo.php",true);
        xmlhttp.send();
    }
}


Что тут не так?

Последний раз редактировалось Greider, 13.02.2018 в 10:30.
Ответить с цитированием
  #7 (permalink)  
Старый 13.02.2018, 11:05
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,815

Greider, откройте консоль и посмотрите в чем причина.
Данные нужно передавать в методе "send" xhr.
У вас этого нет, смотрите комментарий #2
Ответить с цитированием
  #8 (permalink)  
Старый 13.02.2018, 12:01
Интересующийся
Отправить личное сообщение для Greider Посмотреть профиль Найти все сообщения от Greider
 
Регистрация: 30.09.2010
Сообщений: 20

Сообщение от Nexus Посмотреть сообщение
Greider, откройте консоль и посмотрите в чем причина.
Данные нужно передавать в методе "send" xhr.
У вас этого нет, смотрите комментарий #2
В изначальном примере этого не было, как я понял для GET запросов это не нужно: https://learn.javascript.ru/ajax-xml...%8B%D0%B5-send
Впрочем варианте xmlhttp.send(str); тоже не работает.

Т.е. php-скрипт Getinfo.php срабатывает, результирующая таблица отображается, но пустая, т.е. никаких данных Getinfo.php не получил ($_GET['size'] и $_GET['weight'] пустые). В консоли файрфокса ошибок нет...

Последний раз редактировалось Greider, 13.02.2018 в 12:33.
Ответить с цитированием
  #9 (permalink)  
Старый 13.02.2018, 12:38
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Greider
Т.е. php-скрипт Getinfo.php срабатывает, результирующая таблица отображается, но пустая
Некорректное отправление.
Ответить с цитированием
  #10 (permalink)  
Старый 13.02.2018, 12:51
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,815

Greider, отправляйте данные методом "post".
FormData методом get, вроде, не отправляется.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как отменить событие onchange при отправке формы? Petja Элементы интерфейса 1 10.04.2014 18:10
Получение данных от формы PHP aleks_lv Серверные языки и технологии 2 12.12.2013 16:28
отправка данных из формы и вывод полученных данных sxe jQuery 2 21.05.2013 00:34
Получение данных из формы Asteroth Элементы интерфейса 1 09.03.2012 17:11
Автоматическое получение данных из формы Beck jQuery 6 06.11.2009 18:01