ajax et autocomplétion

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : ajax et autocomplétion

Re: ajax et autocomplétion

par AB » 06 juil. 2012, 17:32

Je voulais parler d'un plugin jquery qui fait l'équivalent de ce que tu fais avec mootools. Il y a tellement de développements faits avec cette lib que c'est assez rare de ne pas trouver ce que l'on veut ou quelque chose d'assez approchant.

Re: ajax et autocomplétion

par piotrowski-s » 06 juil. 2012, 09:45

qu'entends tu par modules jquery?

Re: ajax et autocomplétion

par piotrowski-s » 06 juil. 2012, 09:44

d'accord, je pense qu'il s('agit bien d'un cponflit entre les librairies, domage qu'il n'existe pas une grande librairie regroupant toutes les fonctions, à moi de potasser cela. Merci pour ton aide.

Re: ajax et autocomplétion

par AB » 05 juil. 2012, 20:01

C'est assez courant d'avoir des conflits quand on utilise plusieurs lib javascript. Tu n'aurais pas pu trouver des modules jquery pour faire l'équivalent ?
Cela dit il existe une syntaxe jquery qui permet "d'isoler" le code jquery ce qui normalement permet d'utiliser plusieurs lib simultanément. Renseigne-toi dans la doc, j'ai lu ça quelque part mais pas eu besoin de l'utiliser donc je peux pas t'en dire beaucoup plus. Regarde du côté de jQuery.noConflict()

Re: ajax et autocomplétion

par piotrowski-s » 05 juil. 2012, 14:35

Personne?

Re: ajax et autocomplétion

par piotrowski-s » 03 juil. 2012, 09:04

de toute évidence, ça le faisait pas avant, la j'ai rajouté un calendrier et un password strenght metter, et les scripts indépendamment les un des autres fonctionnent mais les trois dans le header et aucun ne fonctionne...

Je ne comprends pas, cela semble bizare.

Re: ajax et autocomplétion

par piotrowski-s » 03 juil. 2012, 09:03

bien la il me rajoute ceci:


Uncaught TypeError: Object [object Object] has no method 'autocomplete' jquery-1.5.1.min.js:16
Uncaught TypeError: Object [object Object] has no method 'set' mootools.js:23
4event.layerX and event.layerY are broken and deprecated in WebKit. They will be removed from the engine in the near future.

Re: ajax et autocomplétion

par AB » 02 juil. 2012, 16:04

Dans la console regarde les requêtes envoyées et la réponse, même sans erreur une requête ajax laisse des traces.

ajax et autocomplétion

par piotrowski-s » 02 juil. 2012, 09:09

Bonjour J'ai un soucis avec un code en ajax.
En fait il s'agit d'aller chercher des noms de ville et code psotal dans la base de donnée, pour cela j'ai deux input dont les id sont ville et cp

j'ai donc en header ce code ci:
[javascript]<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.u ... "></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.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;
}
}
}
}));
}
});
}
},
minLength: 3,
delay: 600
});
});
</script>[/javascript]

voila et donc pour la page qui traite ces informations; j'ai donc ceci:
<?php
require_once('./AutoCompletionCPVille.class.php');

//Initialisation de la liste
$list = array();

//Connexion MySQL
try
{
    $db = new PDO('mysql:host=localhost;dbname=users', 'root', '');
}
catch (Exception $ex)
{
    echo $ex->getMessage();
}

//Construction de la requete
$strQuery = "SELECT CP CodePostal, VILLE Ville FROM cp_autocomplete 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 = $_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");;

echo json_encode($list);
?>
et donc le soucis que j'ai c'est que j'ai plusieurs adresses avec les id cp ville, cp2 ville2 et cp3 ville3

j'ai donc adapté dans le javascript du header de la sorte:

[javascript]<script type="text/javascript">
var cache = {};
$(function ()
{
$("#cp2, #ville2").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.ville2,
value: function ()
{
if ($(this).attr('id') == 'cp2')
{
$('#ville2').val(item.ville2);
return item.CodePostal;
}
else
{
$('#cp2').val(item.CodePostal);
return item.ville2;
}
}
}
}));
}
//Sinon -> Requete Ajax
else
{
var objData = {};
if ($(this.element).attr('id') == 'cp2')
{
objData = { codePostal: request.term, pays: 'FR', maxRows: 10 };
}
else
{
objData = { ville2: 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.CodePostal + ", " + item.ville2,
value: function ()
{
if ($(this).attr('id') == 'cp2')
{
$('#ville2').val(item.ville2);
return item.CodePostal;
}
else
{
$('#cp2').val(item.CodePostal);
return item.ville2;
}
}
}
}));
}
});
}
},
minLength: 3,
delay: 600
});
});
</script>[/javascript]

et jusqu'e la ça fonctionne pour les code postaux mais pour les villes il me dit undefined....

et pourtant je n'ai pas de messages d'erreur dans la console, du coup je ne vois pas d'ou cela peut provenir

j'estime aussi que mes bases en javascript ne me permettent pas de résoudre ce problème seul et mes recherches sont restées vaines jusque la.

Par avance merci pour votre aide.