@aftar

Как c помощью ajax передать несколько значений?

Добрый день! Есть такая функция:
sendOrder: function(e) {
        event.preventDefault();
        var phone_input = $(this).find("input[type=tel]");
        var phone_number = phone_input.val().replace(/[^0-9]/g,"");

        if (phone_number.length === 0 ) {
            phone_input.notify("Введите номер телефона", {position:"bottom" , className: 'error'})
        }

        if (phone_number.length < 12 && phone_number.length >= 4) {
            phone_input.notify("Номер введён не полностью", {position:"bottom" , className: 'warn', gap: 0, autoHideDelay: 3000});
        }
        if (phone_number.length === 12) {
            var data = $(this).serializeArray();
            data.push ({name: 'user_client', value: client_info});
            data.push ({name: 'href', value: href});
            data.push ({name: 'search', value: search});
            data.push ({name: 'term', value: utm_key_value.utm_term});
            data.push ({name: 'content', value: utm_key_value.utm_content});
            data.push ({name: 'campaign', value: utm_key_value.utm_campaign});
            data.push ({name: 'medium', value: utm_key_value.utm_medium});
            data.push ({name: 'source', value: utm_key_value.utm_source});
            data.push ({name: 'ref', value: ref});
            var thisForm = $(this);
            var orderlist = $.param(actions.getStorage());
  	      	$.ajax({
  		        url: opts.handler,
  		        type: 'POST',
  						dataType: 'json',
  		        data: {
                data,
                orderlist},
              error: function() {},
              success: function(resp) {
                $('.jqcart-checkout').html('<p>' + resp.message + '</p>');
      					if(!resp.errors) {
      						setTimeout(methods.clearCart, 2000);
      			 }
          }
        });
      }
    },

объект orderlist - данные с корзины
Если в ajax запросе объекте data оставить только data: data, - то передаются значения телефон, имя... , но данные с корзины не передаются
Если добавить data: {data, orderlist} - то передаются данные с корзины, кроме телефона...
Подскажите как правильно сформировать запрос
  • Вопрос задан
  • 241 просмотр
Решения вопроса 1
xakplant
@xakplant
Автор сайта xakplant.ru
У меня есть пример для Wordpress . Там я формировал объект с данными, а потом превращал в JSON.
Вам нужно создать объект с данными (напишу на чистом JS, думаю что на jquery сможете переписать);
var data = new Object();
     // Допустим данные формы такие
    data.user = {
           name: "Имя" // сюда ваша переменная;
          // Другие данные
        };
   data.orderlist= {
       // данные orderlist
        }

// Далее data вы превращаете в JSON строку

data = JSON.stringify(data);

// JSON строку вы передаёте в ajax
    $.ajax({
        url: opts.handler,
        type: 'POST',
        dataType: 'json',
        data: data
/* И так далее */


Основная ошибка в коде это то что вы пытаетесь отправить js-объект, а не json-строку
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы