Et dire que je pensais que c'était un truc tout simple :mouarf:
Version imprimable
Et dire que je pensais que c'était un truc tout simple :mouarf:
c'est tout simple ...
Quand on comprend ce que l'on fait ...
Parce que tu sais pourquoi ça déconne ? :weird:
Concentre toi sur la réception de ton JSON ...
C'est bon ! ça fonctionne :mrgreen:
En fait, il ne fallait pas enlever le JSON.parse !! 8O
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 <script> $(document).ready(function () { $("#MonSelect").change(function(){ var id=$('#MonSelect').val(); $.ajax({ type: "POST", data: {"ID" : id}, url: "traitement.php", dataType: "JSON", success:function(data){ var Text = JSON.parse(data); console.log(Text['lieu'], Text['adresse']); $("#input_text").val(Text['lieu']); $("#input_text2").val(Text['adresse']); } }); }); }); </script>
Merci pour ton aide ! ;)
là on est dans la quatrième dimension ...
avec un dataType JSON ton retour doit être un json donc pas besoin de JSON.parse ...
Tu as un souci là
Bon, j'ai enlevé le résolu, je remets le script qui fonctionne sans souci :
Code:
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 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Document sans titre</title> <script src="js/jquery-latest.js"></script> <script> $(document).ready(function () { $("#MonSelect").change(function(){ var id=$('#MonSelect').val(); $.ajax({ type: "POST", data: {"ID" : id}, url: "traitement.php", dataType: "JSON", success:function(data){ var Text = JSON.parse(data); console.log(Text['nom'], Text['adresse']); $("#input_text").val(Text['nom']); $("#input_text2").val(Text['adresse']); } }); }); }); </script> </head> <body> <select name="MonSelect" id="MonSelect" > <option value=""selected="selected"><-- Choix Code --> </option> <option value="1">Test</option> </select> <input name="input_text" type="text" id="input_text" value="" size="30" /> <input name="input_text2" type="text" id="input_text2" value="" size="10" /> </body> </html>
la page de traitement :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <?php $database_Consult_ext = "xxx"; $Consult_ext = mysql_connect("127.0.0.1", "xxx", "xxx"); $ID = $_POST['ID']; mysql_select_db($database_Consult_ext, $Consult_ext); $query_Recordset_Code = "SELECT * FROM test1, test2 WHERE test1.id=test2.id AND test1.id = '$ID'"; $Recordset_Code = mysql_query($query_Recordset_Code, $Consult_ext) or die(mysql_error()); $row_Recordset_Code = mysql_fetch_assoc($Recordset_Code); $totalRows_Recordset_Code = mysql_num_rows($Recordset_Code); echo json_encode($row_Recordset_Code); // le résultat de la requete est envoyé dans un JSON ?>
Moi qui pensais avoir trouvé la solution ... De toute façon, j'étais bloqué à l'étape suivante, je récupère 2 entrées donc je dois mettre en place une boucle ...
Enfin en attendant, ce script fonctionne ...
ça c'est juste contradictoire ...
Ton retour est automatiquement interprété comme un jsonCode:
1
2
3 dataType: "JSON", success:function(data){ var Text = JSON.parse(data);
Donc tu ne peux pas parser un json..
essayeCode:dataType: "json",
Effectivement, ça fonctionne ! Le datatype est sensible à la case ... 8O
Du coup, je comprends toujours pas pourquoi FireBug trouvait du JSON dans onglet ...
Bonjour,
Bon du coup, après ton aide et mes différents tests, je me suis rendu compte qu'il allait falloir boucler tout ça pour ce que je voulais ...
Je vais passer le sujet en résolu mais avant juste savoir si le code suivant ne te semble pas trop moche ... Il fonctionne sans souci par contre.
(Je vais adapter le nom des ID, etc... Il s'agit de code de test ...)
essai.php
Code:
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 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Document sans titre</title> <script src="js/jquery-latest.js"></script> <script> $(document).ready(function () { $("#MonSelect").change(function () { var id = $('#MonSelect').val(); $.ajax({ type: "POST", data: {"ID": id}, url: "traitement.php", dataType: "json", success: function (data) { for (var i = 0; i < data.length; i += 1) { obj = data[i]; var conteneur = document.getElementById('table_d'); var tr1 = document.createElement('tr'); var td1 = document.createElement('td'); var td2 = document.createElement('td'); var match = document.createElement('input'); var val = document.createElement('input'); match.setAttribute("type", "text"); match.setAttribute("name", "1"); match.setAttribute("value", obj.match); val.setAttribute("type", "text"); val.setAttribute("name", "2"); val.setAttribute("value", obj.val); td1.appendChild(match); td2.appendChild(val); tr1.appendChild(td1); tr1.appendChild(td2); conteneur.appendChild(tr1); } } }); }); }); </script> </head> <body> <select name="MonSelect" id="MonSelect"> <option value=""selected="selected"><-- Choix Code --> </option> <option value="1">Test</option> <option value="2">Bli</option> </select> <table id="table_d"><table> </body> </html>
traitement.php
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <?php $database_Consult_ext = "xxxx"; $Consult_ext = mysql_connect("127.0.0.1", "xxx", "xxx"); $ID = $_POST['ID']; mysql_select_db($database_Consult_ext, $Consult_ext); $query_Recordset_Code = "SELECT * FROM test1, test2 WHERE test1.id=test2.id AND test1.id = '$ID'"; $Recordset_Code = mysql_query($query_Recordset_Code, $Consult_ext) or die(mysql_error()); while ($row = mysql_fetch_assoc($Recordset_Code)) { $row_Recordset_Code[] = $row; } echo json_encode($row_Recordset_Code); // le résultat de la requete est envoyé dans un JSON ?>
Merci à vous ! ;-)
Ah si, c'est affreux...
Déjà, puisque tu utilises jQuery, fais-le jusqu'au bout.
Plutôt que ta boucle for, utilises $.each(data, function(index, valeur){...}.
Ensuite, jQuery permet de créer facilement des éléments
Code:
1
2
3
4 var $input = $('<input>', { type: 'text', // toutes les paires attribut / valeur que tu veux });
J'ai mis un peu de temps, ci-joint le bon code! Merci ;)
Code:
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 $(document).ready(function () { $("#MonSelect").selectmenu({ change:function () { var id = $('#MonSelect').val(); $.ajax({ type: "POST", data: {"ID": id}, url: "traitement.php", dataType: "json", success: function (data) { $('#table_d').empty(); $.each(data, function (index, valeur) { var input_match = $('<input>', { type: 'text', value: valeur.match }); var input_val = $('<input>', { type: 'text', value: valeur.val }); var row = $("<tr />"); $("#table_d").append(row); row.append($("<td class='test'>" + input_match.val() + "</td>")); row.append($("<td class='test'>" + input_val.val() + "</td>")); }); } }); } }); });