Объяснение: Ajax в цикле for

Ajax не работает с циклом for. Может ли кто-нибудь исправить мой код и объяснить мне, пожалуйста. Я просто хочу поместить это значение в свою базу данных. Я могу заставить его работать, только если я вызову ajax один раз не так, как это, он находится в цикле for.

var counter = $("input[name^= 'quantity']").length;
var array1 = $("input[name^= 'quantity']");
var array2 = $("input[name^= 'unit']");
var array3 = $("input[name^= 'item_description']");
var array4 = $("input[name^= 'stock_no']");
var array5 = $("input[name^= 'eunitcost']");
var array6 = $("input[name^= 'ecost']");

var i;

for (i = 0; i < counter; i++) {
  $.ajax({
    url: 'http://localhost/pm/admin/service/user-service.php',
    type: 'POST',
    dataType: 'json',
    data: {
      operation: 'pr-items',
      pr_no: $('#prno').val(),
      quantity: array1.eq(i).val(),
      unit: array2.eq(i).val(),
      item_description: array3.eq(i).val(),
      stock_no: array4.eq(i).val(),
      eunitcost: array5.eq(i).val(),
      ecost: array6.eq(i).val
    },

    success: function(data) {
      alert('pr items success');
      //todo
    },
    error: function(data) {
      // alert('pr items error');
      //todo
    }
  });
}

Каким именно образом это не удается? В чем проблема?

David 28.08.2018 19:34

В идеале вы должны отправлять только один запрос AJAX. Избегайте зацикливания и создания запросов AJAX для каждой записи. Создайте массив и закодируйте его как JSON.

Patrick Gregorio 28.08.2018 19:38

@PeterFestejo: Вам не хватает () после val в вашей строке ecost. Это помогает?

interfect 28.08.2018 19:42

Попробуйте установить async: false в свой вызов ajax

Sanjay 28.08.2018 19:48

«мой код не работает» без объяснения того, что означает «работает». Каков ваш желаемый результат? Что конкретно не работает? Без этой информации этот вопрос не по теме и должен быть закрыт

mhodges 28.08.2018 19:49

@Sanjay: Это совет ужасный. И, скорее всего, скоро перестанет работать в браузерах, если еще не сделал этого.

David 28.08.2018 19:49

@ Дэвид. Хотел бы я проголосовать за ваш комментарий тысячу раз.

mhodges 28.08.2018 19:50

@interfect хорошо, что работает. Но когда я запускаю его снова, он предупреждает об ошибке pr item, когда я удаляю комментарий к нему.

Peter Festejo 28.08.2018 20:05

@PeterFestejo: если операция AJAX вызывает обратный вызов error, то сервер возвращает ошибку. Что это за ошибка? Используйте инструменты отладки вашего браузера, чтобы наблюдать за фактическими запросами, отправляемыми на сервер, и фактическими ответами, поступающими с сервера. Проверьте журналы серверного приложения на наличие информации об ошибках. Вам нужно отлаживать, чтобы увидеть, что происходит.

David 28.08.2018 20:19

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

Alon Eitan 28.08.2018 21:22
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
10
76
1

Ответы 1

Я выяснил, что причина, по которой мой приведенный выше код не работает, потому что у ecost: array6.eq(i).val нет () после .val, а также я обнаружил, что использование ajax-вызовов в циклах не является хорошей практикой. Мне жаль, если я не могу хорошо объяснить здесь, в stackoverflow, что привело к отрицательным голосам и временному бану. Но я это заслужил. Я просто не могу улучшить свои вопросы.

Другие вопросы по теме