Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.11.2022, 12:20
Аспирант
Отправить личное сообщение для TheSanches Посмотреть профиль Найти все сообщения от TheSanches
 
Регистрация: 21.01.2018
Сообщений: 78

$.ajax переписать на fetch
Как переписать отправку формы написанную на jQuery, используя fetch

function messagesFromBase() {

        var subjectId = 2;
        var lastName = 'text';
        var firstName = 'text';
        var thirdName = 'text';
        var companyName = 'text';
        var response = {};
        $.ajax({
            async: false,
            type: "POST",
            dataType: 'json',
            charset: 'windows-1251',
            url: "url-base",
            data: {
                subjectId: subjectId,
                lastName: lastName,
                firstName: firstName,
                thirdName: thirdName,
                companyName: companyName
            },
            success: function (resp) {
                response = resp;
            },
            error: function (jqXHR, status, e) {
                response = false;
            },
        });
        return response;
    }
Ответить с цитированием
  #2 (permalink)  
Старый 07.11.2022, 14:36
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

async: false, не пройдет. fetch всегда асинхронный
Про windows-1251 тоже сомневаюсь. Обычно все в utf-8
Ответить с цитированием
  #3 (permalink)  
Старый 07.11.2022, 15:02
Аспирант
Отправить личное сообщение для TheSanches Посмотреть профиль Найти все сообщения от TheSanches
 
Регистрация: 21.01.2018
Сообщений: 78

Накатал такой вариант, в консоль выводит полученные массивы, но сам return response? не заполняет необходимые поля при вызове функции

async function messagesFromBase() {
        var subjectId = 2;
        var lastName = 'text';
        var firstName = 'text';
        var thirdName = 'text';
        var companyName = 'text';
        var response = {};
        var dataB = new FormData();
        dataB.append('subjectId', subjectId);
        dataB.append('lastName', lastName);
        dataB.append('firstName', firstName);
        dataB.append('thirdName', thirdName);
        dataB.append('companyName', companyName);

        try {
            const resp = await fetch("url-base", {
                method: 'POST',
                body: dataB
            });
            response = await resp.json();

        } catch (error) {
            console.log('Ошибка:', error);
        }

        console.log(response)
        return response;
    }
Ответить с цитированием
  #4 (permalink)  
Старый 07.11.2022, 15:10
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

TheSanches,
сделайте вызов функции что у вас там заполняет в строке 21 пост #3
Ответить с цитированием
  #5 (permalink)  
Старый 07.11.2022, 15:15
Аспирант
Отправить личное сообщение для TheSanches Посмотреть профиль Найти все сообщения от TheSanches
 
Регистрация: 21.01.2018
Сообщений: 78

В рабочем варианте я должен получать массивы с базы
{messageCount: 9, log: Array(9), ticketId: 11620, null: null}

На основании этих данных рисую верстку

Последний раз редактировалось TheSanches, 07.11.2022 в 15:18. Причина: Исправление
Ответить с цитированием
  #6 (permalink)  
Старый 07.11.2022, 15:22
Аспирант
Отправить личное сообщение для TheSanches Посмотреть профиль Найти все сообщения от TheSanches
 
Регистрация: 21.01.2018
Сообщений: 78

пост #1
Полностью рабочий, но из-за async: false, не могу установить время ожидания ответа сервера, И если серв. не отвечает, все виснет. Поэтому питаюсь переписать на fetch
Ответить с цитированием
  #7 (permalink)  
Старый 07.11.2022, 15:42
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от TheSanches
но сам return response? не заполняет необходимые поля при вызове функции
async-функция возвращает промис.
Нужно писать
messagesFromBase(...)
   .then(res => {
      // тут будет ответ для заполнения полей
   })
   .catch(err => {
      // тут ошибка
   })
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
$.ajax переписать на fetch TheSanches Общие вопросы Javascript 1 28.10.2022 10:09
Авторизация в ВК с помощью fetch() caseyryan Общие вопросы Javascript 1 29.06.2017 10:38
переделать функцию adspro AJAX и COMET 5 09.03.2015 04:32
Ошибка вызова $.ajax Liv AJAX и COMET 7 17.01.2013 17:36
Проблема с $.ajax Iesua jQuery 5 14.07.2012 17:17