Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.11.2019, 11:15
Кандидат Javascript-наук
Отправить личное сообщение для firsmember Посмотреть профиль Найти все сообщения от firsmember
 
Регистрация: 08.11.2019
Сообщений: 113

получить значения полей отправляемой формы и передать в data на ajax
Приветствую гениев ajax кода. Большая к вам просьба, подскажите решение пожалуйста...

Есть страница на которой множество различных форм с input, textarea, select, checkbox и radio... При чем в одной форме может быть только input, в другой 2 input и select , а в 3 и других все перечисленное вместе взятое.... у этих полей ввода заданы одни атрибуты name , а обработчик находится на другом сервере и жде совершенно другие name с value из отправляемой формы...

Для примера, в обработчик передаю данные введенные вручную в вот так и он принимает...

$.ajax({
            url: "http://site.com/blablabla/",
            data: {
                fullName: "Иванов Иван Васильевич",
                eMail: "ivanov@mail.ru",
                phone: "+712312312312",
                discipline: "Английский",
                learningLevel: "Средний",
                school: "Главный филиал",
                teacher: "Петров Пётр Петрович",
                beginDate: "17.03",
                weekdays: "ср/чт",
                beginTime: "15:30",
                endTime: "16:10",
                type: "Заявка на обучение",
                description: "Примечание к заявке"
            },
            type: "POST",
            success: function(result) {
                if (result.Error) alert("Ошибка: " + result.Error);
                else alert("Успешно: " + result.Id);
            },
            error: function(jqXhr) {
                alert("Ошибка: " + jqXhr.statusText + " (" + jqXhr.readyState + ", " + jqXhr.status + ", " + jqXhr.responseText + ")");
            }
        });


т.е. у нас поле name="name" value="Игорь" например, а обработчик ждет
name="fullName" value="Игорь"

Потому хочу сделать как то так, но что то не получается...

var strr = $(this).serialize();
var strresult = JSON.parse(JSON.stringify(strr));

        $.ajax({
            url: "http://site.com/blablabla/",
            data: {
                fullName: strresult.name,
                eMail: strresult.mail,
                phone: strresult.tel,
                discipline: "Английский",
                learningLevel: "Средний",
                school: "Главный филиал",
                teacher: "Петров Пётр Петрович",
                beginDate: "17.03",
                weekdays: "ср/чт",
                beginTime: "15:30",
                endTime: "16:10",
                type: "Заявка на обучение",
                description: "Примечание к заявке"
            },
            type: "POST",
            success: function(result) {
                if (result.Error) alert("Ошибка: " + result.Error);
                else alert("Успешно: " + strresult.tel);
            },
            error: function(jqXhr) {
                alert("Ошибка: " + jqXhr.statusText + " (" + jqXhr.readyState + ", " + jqXhr.status + ", " + jqXhr.responseText + ")");
            }
        });
Ответить с цитированием
  #2 (permalink)  
Старый 30.11.2019, 12:53
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Триллер какой-то о множестве форм и ручном вводе. А имена полей форм переименовать под нужное?
Ответить с цитированием
  #3 (permalink)  
Старый 30.11.2019, 13:23
Кандидат Javascript-наук
Отправить личное сообщение для firsmember Посмотреть профиль Найти все сообщения от firsmember
 
Регистрация: 08.11.2019
Сообщений: 113

а если конструктор эти формы делает и доступа к именам полей нет?
Ответить с цитированием
  #4 (permalink)  
Старый 30.11.2019, 13:43
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Ну это уже ваши проблемы, но какой бы ни был конструктор, имена не он за вас придумывать будет, это он может сделать только по умолчанию.

А если у вас куча форм, а значит куча разных имен, и вся эта куча обрабатывается одним обработчиком, то опишите соответствия имен текущих именам нужных, по которому делайте замену.
Ответить с цитированием
  #5 (permalink)  
Старый 30.11.2019, 14:29
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Что-то я сходу отмел конструктор сайтов, которые хост предлагает, о нем речь? Кто же вас заставляет такую дурь использовать. )
Если исходить из предположения, что "много форм и один обработчик", то в нем можно так:
//это список имен полей, которые нужно изменять, где
//свойство - это текущее имя поля формы
//значение свойства - это имя на которое нужно заменить
var fields = {
    old_name1: 'new_name1',
    old_name2: 'new_name2',      
}, data = new FormData();

$.each(this.elements, function() {
    data.append(fields[this.name] || this.name, this.value)
});

$.ajax({
    url: "http://site.com/blablabla/",
    type: "POST",
    data: data,
    success: function(result) {
.....

Последний раз редактировалось laimas, 30.11.2019 в 14:36.
Ответить с цитированием
  #6 (permalink)  
Старый 01.12.2019, 09:44
Кандидат Javascript-наук
Отправить личное сообщение для firsmember Посмотреть профиль Найти все сообщения от firsmember
 
Регистрация: 08.11.2019
Сообщений: 113

так а вручную мне как некоторые параметры передать?
discipline: "Английский",
learningLevel: "Средний",
school: "Главный филиал",
teacher: "Петров Пётр Петрович",
Именно в скрипте хочу их добавить что бы не создавать кучу скрытых полей
Ответить с цитированием
  #7 (permalink)  
Старый 01.12.2019, 10:59
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от firsmember
так а вручную мне как некоторые параметры передать?
Добавить к полям что есть в форме?
Ответить с цитированием
  #8 (permalink)  
Старый 01.12.2019, 11:02
Кандидат Javascript-наук
Отправить личное сообщение для firsmember Посмотреть профиль Найти все сообщения от firsmember
 
Регистрация: 08.11.2019
Сообщений: 113

да, именно
Ответить с цитированием
  #9 (permalink)  
Старый 01.12.2019, 11:23
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

<form>
<input name="a" value="11" />
<input name="b" value="22" />
<input name="c" value="33" />
<input name="d" value="44" />
</form>

<pre></pre>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
var fields = { //заменяемые поля
    a: 'new_a',
    c: 'new_c'     
}, data = { //добаления
    discipline: "Английский",
    learningLevel: "Средний",
    school: "Главный филиал",
    teacher: "Петров Пётр Петрович"
}

$.each(document.querySelector('form').elements, function() { //в реальном document.querySelector('form').elements заменить на this.elements
    data[fields[this.name] || this.name] = this.value
});

$('pre').text(JSON.stringify(data, null, 4)); //посмотреть результат
</script>
Ответить с цитированием
  #10 (permalink)  
Старый 01.12.2019, 11:41
Кандидат Javascript-наук
Отправить личное сообщение для firsmember Посмотреть профиль Найти все сообщения от firsmember
 
Регистрация: 08.11.2019
Сообщений: 113

Отлично, спасибо, только один момент
сейчас в data
данные получатся в вот такой форме
"discipline": "Английский",
    "learningLevel": "Средний",
    "school": "Главный филиал",
    "teacher": "Петров Пётр Петрович",
    "new_a": "11",
    "b": "22",
    "new_c": "33",
    "d": "44"


А ужно

school: "Главный филиал",
                teacher: "Петров Пётр Петрович",
                beginDate: "17.03",
                weekdays: "ср/чт",
                beginTime: "15:30",
                endTime: "16:10",
                type: "Заявка с лендинга Долгопрудный",
                description: "Примечание к заявке"


Т.е. только значение должно оборачиваться в двойные кавычки

Последний раз редактировалось firsmember, 01.12.2019 в 11:44.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить значения из формы VistaSV30 Общие вопросы Javascript 1 20.01.2011 20:12
Получить значения доп. полей select-option arcanerain Общие вопросы Javascript 11 29.09.2010 03:02
Собрать значения всех полей формы vvsh Events/DOM/Window 3 09.11.2009 00:35
Передать все значения списка разом LRCenter Элементы интерфейса 10 23.06.2009 12:29
проверка полей формы!!!! DENAT Общие вопросы Javascript 0 05.06.2008 22:14