[AJAX] autocomplétion ajax : donnée non envoyée
Bonjour,
j'ai utilisé le script donné par Xavier ZOLEZZI dans son tutorial ici
http://x-zolezzi.developpez.com/tuto...utocompletion/
ça marche bien mais la valeur récupéré par l'autocompletion pour le champ code postal n'est pas envoyé , alors que pour la ville ça fonctionne
j'ai un formulaire avec divers champs et les deux champs "autocompletion" pris sur le script ( champ "ville destination" et "code postal" )
je récupère bien toutes les valeurs des champs mais pas celle du code postal récupéré par l'autocompletion
le fichier ou est le formulaire , index.html
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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
| <script type="text/javascript" src="http://code.jquery.com/jquery-1.5.1.min.js"></script>
<script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery.ui/1.8.10/jquery-ui.js"></script>
<script type="text/javascript">
var cache = {};
$(function ()
{
$("#cp, #ville").autocomplete({
source: function (request, response)
{
//Si la réponse est dans le cache
if (('FR' + '-' + request.term) in cache)
{
response($.map(cache['FR' + '-' + request.term], function (item)
{
return {
label: item.CodePostal + " / " + item.Ville,
value: function ()
{
if ($(this).attr('id') == 'cp')
{
$('#ville').val(item.Ville);
return item.CodePostal;
}
else
{
$('#cp').val(item.CodePostal);
return item.Ville;
}
}
}
}));
}
//Sinon -> Requete Ajax
else
{
var objData = {};
if ($(this.element).attr('id') == 'cp')
{
objData = { codePostal: request.term, pays: 'FR', maxRows: 10 };
}
else
{
objData = { ville: request.term, pays: 'FR', maxRows: 10 };
}
$.ajax({
url: "./AutoCompletion.php",
dataType: "json",
data: objData,
type: 'POST',
success: function (data)
{
//Ajout de reponse dans le cache
cache[('FR' + '-' + request.term)] = data;
response($.map(data, function (item)
{
return {
label:item.Ville + " / " +item.CodePostal ,
value: function ()
{
if ($(this).attr('id') == 'cp')
{
$('#ville').val(item.Ville);
return item.CodePostal;
}
else
{
$('#cp').val(item.CodePostal);
return item.Ville;
}
}
}
}));
}
});
}
},
minLength: 3,
delay: 600
});
});
</script>
<link rel="Stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/themes/base/jquery-ui.css" />
<form action="index.html" method="get">
<table width="700" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="149">Votre ville :</td>
<td width="551"><input type="text" name="nomville" value="" id="ville1"></td>
</tr>
<tr>
<td>Votre nom :</td>
<td><input type="text" name="nomuser" id="nom"></td>
</tr>
<tr>
<td>Ville destination :</td>
<td><input type="text" id="ville" name="villedestination" size="30" /> </td>
</tr>
<tr>
<td>Code Postal :</td>
<td><input type="text" name "codepostal" id="cp" size="10"/></td>
</tr>
<tr>
<td>votre email :</td>
<td><input type="text" name="mailuser" id="textfield4"></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="button" id="button" value="Envoyer"></td>
</tr>
</table>
</form> |
la class, AutoCompletionCPVille.class.php
Code:
1 2 3 4 5 6
| <?php
class AutoCompletionCPVille {
public $CodePostal;
public $Ville;
}
?> |
et le fichier AutoCompletion.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 53 54 55 56 57 58 59 60
| <?php
require_once('./AutoCompletionCPVille.class.php');
//Initialisation de la liste
$list = array();
//Connexion MySQL
try
{
$db = new PDO('mysql:host=localhost;dbname=base', 'root', '');
}
catch (Exception $ex)
{
echo $ex->getMessage();
}
//Construction de la requete
$strQuery = "SELECT CP CodePostal, VILLE Ville FROM table WHERE ";
if (isset($_POST["codePostal"]))
{
$strQuery .= "CP LIKE :codePostal ";
}
else
{
$strQuery .= "VILLE LIKE :ville ";
}
$strQuery .= "AND CODEPAYS = 'FR' ";
//Limite
if (isset($_POST["maxRows"]))
{
$strQuery .= "LIMIT 0, :maxRows";
}
$query = $db->prepare($strQuery);
if (isset($_POST["codePostal"]))
{
$value = $_POST["codePostal"]."%";
$query->bindParam(":codePostal", $value, PDO::PARAM_STR);
}
else
{
$value = utf8_decode($_POST["ville"])."%";
$query->bindParam(":ville", $value, PDO::PARAM_STR);
}
//Limite
if (isset($_POST["maxRows"]))
{
$valueRows = intval($_POST["maxRows"]);
$query->bindParam(":maxRows", $valueRows, PDO::PARAM_INT);
}
$query->execute();
$list = $query->fetchAll(PDO::FETCH_CLASS, "AutoCompletionCPVille");;
foreach ($list as $row){
mb_detect_encoding($row->Ville, "UTF-8") != "UTF-8" ? : $row->Ville = utf8_encode($row->Ville); // encodage des champs texte en utf8 si il ne le sont pas.
}
echo json_encode($list);
?> |
la base est celle qui est fourni dans le tutorial ( petite base )
merci pour votre aide