Bonjour,

dans le cadre d'une autocompletion , j interroge une table mysql, et parfois les données retournées contiennent des caractères spéciaux (apostrophes notamment).

vous aurez compris qu il s'agit donc de combiner javascript et php,

je prepare la reponse dans le code PHP en construisant une liste qui contient un fonction onclick="remplir()".
Et c'est là que rien ne vas plus, si le parametre de la fonction contient un mot avec apostrophes (levi's par exemple) , je ne sais pas comment echapper ce caracère.
En fait je ne sais pas à quel moment il faut traiter cela. (sur l'envoi ajax, la fonction javscript, ou dans le code php)

J'ai cru comprendre que escape et unescape le permettent, mais il faut deja savoir où agir.... arghhhh!

bon et bien place au code:

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
 
function autosuggest() {
getXhr()
q = document.getElementById('search-q').value;
// Set te random number to add to URL request
nocache = Math.random();
xhr.open('get','search.php?q='+q+'&nocache = '+nocache);
xhr.onreadystatechange = autosuggestReply;
xhr.send(null);
}
 
function remplir(a) 
{ 
document.getElementById('search-q').value =  a; 
}
et le traitement PHP

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
<?php
	$searchq		=	strip_tags($_GET['q']);
	$getRecord_sql	=	'SELECT * FROM '.$SQL_FROM.' WHERE '.$SQL_WHERE.' LIKE "'.$searchq.'%"';
	$getRecord		=	mysql_query($getRecord_sql);
	if(strlen($searchq)>0){
 
while ($row = mysql_fetch_array($getRecord)) {		
 
 echo ' 
<li class="contact"><div class="nom" onclick="remplir(\''.$row['marque'].'\');">'.$row['marque'].'</div>
Donc pour linstant cela fonctionne dans le sens ou la liste construit e contient bien les données avec apostrophes, c'est juste la fonction onclick="remplir()" qui n'en veut pas!
erreur Firedebug :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
Erreur*: missing ) after argument list
Ligne*: 1, Colonne*: 14
Code Source*: remplir('levi's');
@++, si vous connaissez la parade...