2016-07-06 3 views
-2

Я надеюсь, что кто-то может мне помочь. У меня есть функция jquery, которая получает значения из php-формы, и мне нужно создать переменную для вызова ajax. Можно ли добавить петлю в варJQuery loop in a var

Вот мой код так, надеюсь, будет лучше объяснить, что я пытаюсь сделать

... 
var teacher_ids = $('#teacher_ids').val(); 
var status = 'pending'; 
var array = teacher_ids.split(','); 

var data = { 
    name: title, 
    short_description: excerpt, 
    description: content, 
    status: status, 
    type: 'variable', 
    variations : [ 

Это где я имею вопрос, у меня есть несколько значений, которые Я хочу иметь возможность петли, хотя

$.each(array,function (i, item) { 
    variation_type = item.split('_'); 
    { 
     regular_price: half_hour, 
     attributes: [{ 
      id:3, 
      slug: 'pa_lessonduration', 
      //name: 'lessonduration', 
      option: '1-hour' 
     },{ 
      id: 1, 
      slug: 'pa_weekday', 
      // name: 'weekday', 
      option: variation_type[0] 
     },{ 
      id: 2, 
      slug: 'pa_daytime', 
      //name: 'daytime', 
      option: variation_type[1], 
     }] 
     //"expected an assignment or function call and instead saw an expression?" 
    } 
    //"expected (saw { " 
    }) 

$.ajax({ 
     method: "PUT", 
     url: POST_SUBMITTER.root + 'wc/v1/products/'+ product_id +'', 
     data: data, 
     beforeSend: function (xhr) { 
      xhr.setRequestHeader('X-WP-Nonce', POST_SUBMITTER.nonce); 
     }, 
     success : function(response) { 
      console.log(response); 
      alert(POST_SUBMITTER.success); 
     }, 
     fail : function(response) { 
      console.log(response); 
      alert(POST_SUBMITTER.failure); 
     } 


    }); 

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

var data = { 
    name: title, 
    short_description: excerpt, 
    description: content, 
    status: status, 
    type: 'variable', 
    variations: [{ 
     regular_price: '19.99', 
     attributes: [{ 
      id: 3, 
      name: 'pa_lessonduration', 
      option: '1-hour' 
     }, { 
      name: 'pa_daytime', 
      option: '0900' 
     }, { 
      name: 'weekday', 
      option: 'monday' 
     }] 
    }, 
    { 
     regular_price: '19.99', 
     attributes: [{ 
      id: 3, 
      name: 'pa_lessonduration', 
      option: '1-hour' 
     }, { 
      name: 'pa_daytime', 
      option: '1100' 
     }, { 
      name: 'weekday', 
      option: 'wednesday' 
     }] 
    }] 
} 

и т.д. и т.п ...

Я надеюсь, что имеет смысл, если не спрашивают, и я постараюсь сделать его более ясным

+3

Спасибо за ваши слова поддержки :) Я думаю, кто-то вроде вас, обладающий обширными знаниями, не может комментировать, чтобы помочь столь скромному бытию, как и я? – Martiniboy

+0

Не уверен, что я полностью понимаю вопрос. На первый взгляд, мне кажется, было бы легче создать переменную для «вариаций», а затем использовать ее, а не пытаться создать ее на месте. Вам понадобится дополнительная информация, чтобы действительно понять. – ckimbrell

+1

Спасибо Zakarai за то, что он убрал мой код, извините, я добавил его на свой телефон так сложно, чтобы получить правильное форматирование, извините, если мой формат оскорблен. Я буду целой функцией, когда я буду перед моим компьютером, чтобы не смущать кого-либо еще. – Martiniboy

ответ

0

Код ниже определяет массив variation для последующего использования в data.

var teacher_ids = $('#teacher_ids').val(); 
var status = 'pending'; 
var array = teacher_ids.split(','); 

variation=[];     // Declare an empty array 
           // Then define it 
for(i=0;i<array.length;i++){ 
    variation_type = array[i].split('_'); 

    variation[i] = { 
     regular_price: half_hour, 
     attributes: [{ 
      id:3, 
      slug: 'pa_lessonduration', 
      //name: 'lessonduration', 
      option: '1-hour' 
     },{ 
      id: 1, 
      slug: 'pa_weekday', 
      // name: 'weekday', 
      option: variation_type[0] 
     },{ 
      id: 2, 
      slug: 'pa_daytime', 
      //name: 'daytime', 
      option: variation_type[1] 
     }] 
    } 
} 


var data = {     // Define data 
    name: title, 
    short_description: excerpt, 
    description: content, 
    status: status, 
    type: 'variable', 
    variations : variation  // This is the array defined in the loop above 
} 

$.ajax({ 
    method: "PUT", 
    url: POST_SUBMITTER.root + 'wc/v1/products/'+ product_id +'', 
    data: data, 
    beforeSend: function (xhr) { 
     xhr.setRequestHeader('X-WP-Nonce', POST_SUBMITTER.nonce); 
    }, 
    success : function(response) { 
     console.log(response); 
     alert(POST_SUBMITTER.success); 
    }, 
    fail : function(response) { 
     console.log(response); 
     alert(POST_SUBMITTER.failure); 
    } 
}); 
+0

Большое спасибо ** Louys Patrice Bessette **, мне просто нужно было объявить пустой массив vari_type перед циклом, и он отлично поработал, почему это не работает с $ .each? В одном из моих предыдущих тестов я попытался определить вариант до добавления его в переменную данных var, но он не сработал, но использовал $ .each – Martiniboy

+0

'$ .each()' полезно циклически перебирать коллекции элементов HTML. И эта коллекция должна быть указана перед ней. Пример: '$ (". Item "). Each (function() {// что-то делать для каждого элемента, который имеет элемент класса}' Для циклического перехода по массиву лучше всего подходит цикл javascript 'for'. –

+0

имеет смысл, спасибо – Martiniboy