Bonjour à tous,
Je n'arrive pas à résoudre un problème que j'ai avec l'extraction de données dans une source Json avec Jquery.
J'accède parfaitement à mon tableau fields, mais lorsque je souhaite faire un data[fields[i].name], cela ne me retourne rien...
Quelqu'un a t'il une idée d'une solution pour ce problème ?
Source Json :
Mon traitement Jquery.ajax :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 {"os": [{"id":"1","value":"AIX"},{"id":"2","value":"HP-UX"},{"id":"3","value":"Linux"},{"id":"4","value":"Solaris"},{"id":"5","value":"Windows"},{"id":"6","value":"Autre"}], "priority": [{"id":"1","icon":"priority_blocker.gif","value":"Urgent"},{"id":"3","icon":"priority_major.gif","value":"Normal"},{"id":"4","icon":"priority_minor.gif","value":"Low"}], "security": [{"id":"1","value":"Aucune"},{"id":"2","value":"value1"},{"id":"3","value":"value2"},{"id":"4","value":"Support"}], "fields": [{"hidden":false,"name":"priority","required":true,"type":"selectImg"},{"hidden":false,"name":"security","required":true,"type":"select"},{"hidden":false,"name":"os","required":true,"type":"select"},{"hidden":false,"name":"component","required":false,"type":"input"},{"hidden":false,"name":"summary","required":true,"type":"input"},{"hidden":false,"name":"description","required":true,"type":"textarea"},{"hidden":false,"name":"attachment","required":false,"type":"file"},{"hidden":false,"name":"duedate","required":false,"type":"input"}]}
Grosso-modo, en fonction du type de champs, j'affiche le composant HTML et je souhaite récupérer les valeurs des selects.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 $.ajax({ type: "POST", url: portletContextURL, data: {productId:$('#product').val(), issueTypeId:$('#issueType').val()}, dataType: 'json', cache: false, success: function(data){ // Parcours des champs. var myFields = data['fields']; for(var i = 0 ; i < myFields.length ; i++){ if(myFields[i].type == 'selectImg' || myFields[i].type == 'select'){ // On vide le composant. $('#'+myFields[i].name).children().remove(); ----------> Mon problème est ici : var mySelectField = data[myFields[i].name]; // Parcours des valeurs et affichage de celles-ci. for(var y = 0 ; y < mySelectField.length ; y++){ if('#'+myFields[i].type == 'select'){ $('#'+myFields[i].name).append($('<option></option>').attr('value',mySelectField[y].id).text(mySelectField[y].value)); }else if('#'+myFields[i].type == 'selectImg'){ $('#'+myFields[i].name).append($('<option></option>').attr('value',mySelectField[y].id).attr('title',portletContextRoot+'/img/'+mySelectField[y].icon).text(mySelectField[y].value)); } } // Si le champs est obligatoire, on ajoute la classe de contrôle. if(myFields[i].required){ $('#'+myFields[i].name).addClass('notNull'); }else{ $('#'+myFields[i].name).removeClass('notNull'); } /* * Si le champs n'est pas caché, on recharge le dropdownlist * et on affiche le bloc correspondant. * */ if(!myFields[i].hidden){ $('#'+myFields[i].name).msDropDown().data('dd'); $('#'+myFields[i].name+'Bloc').show(); } }else{ // Si le champs est obligatoire, on ajoute la classe de contrôle. if(myFields[i].required){ $('#'+myFields[i].name).addClass('notNull'); }else{ $('#'+myFields[i].name).removeClass('notNull'); } // Si le champs n'est pas caché, on recharge le dropdownlist. if(!myFields[i].hidden){ $('#'+myFields[i].name+'Bloc').show(); } } // Affichage du bouton d'action. $('#actionBloc').show(); } } });
Merci pour votre aide.
Partager