Erreur : SyntaxError: missing ) after argument list

Résolu/Fermé
Bengt - Modifié par Bengt le 9/01/2014 à 10:12
 Bengt - 10 janv. 2014 à 09:44
Bonjour,

Après plusieurs minutes de recherches infructueuses, je me permet de venir vous demander de l'aide.

Voilà le soucis, j'exécute une fonction js après un clic sur un lien en lui passant 4 arguments.

Problème, lors de l'exécution, je me retrouve avec cette erreur et je ne trouve pas pourquoi :
SyntaxError: missing ) after argument list

Avec une flèche pointant sur En attente sur FireBug ci-dessous :
js_affiche_edit_Delib(152, 143, En attente, Lancement)

Voilà les portions de code qui sont concernés !

HTML / PHP :
echo("<a href='#' class='button_SearchMore' onclick='js_affiche_edit_Delib(".$deliberation['MODIF_LOT'].", ".$deliberation['NUMERO'].", ".$deliberation['ELIB'].", ".$deliberation['TLIB'].")'>+</a>");

JS :
function js_affiche_edit_Delib(refcourrier_Modiflot, num_Deliberation, etat_Delib, type_Delib) { Exécution du Code }

Une petite idée ? J'ai raté quelque chose d'hyper évident ? (Il est 9h du matin en même temps :P)

Merci d'avance ! ;)
A voir également:

2 réponses

Utilisateur anonyme
9 janv. 2014 à 10:01
Bonjour
Si firebug pointe sur $deliberation['ELIB'], c'est que ton PHP n'est pas interpreté, car normalement la variable $deliberation['ELIB'] ne devrait exister que dans le serveur, pas chez le client où le javascript est exécuté.
Ta page a-t-elle bien une extension .php ?
Si tu travailles en local, as-tu un serveur Apache (Wamp, easyphp... ?
Utilises-tu bien ce serveur pour appeler ta page ( url http://localhost ou http://127.0.0.1)
2
Abus de langage de ma part, la flèche pointe sur "En attente", donc le troisième argument dans FireBug (qui est l'équivalent après interprétation de $deliberation['ELIB'])

Naturellement le PHP est interprété sur le serveur. Ce n'est pas un serveur local mais distant et oui il y a la bonne extension au fichier ;)
0
Utilisateur anonyme
9 janv. 2014 à 12:15
L'appel
js_affiche_edit_Delib(152, 143, En attente, Lancement)
est incorrect, ce devrait être
js_affiche_edit_Delib(152, 143, "En attente", "Lancement")
(note les double quotes)
Pour les ajouter, ne pas oublier de les échapper :
echo("<a href='#' class='button_SearchMore' onclick='js_affiche_edit_Delib(".$deliberation['MODIF_LOT'].", ".$deliberation['NUMERO'].", "\".$deliberation['ELIB']."\", \"".$deliberation['TLIB']."\")'>+</a>");
1
Merci beaucoup ! C'était bien l'erreur, il fallait les échapper.
Pourquoi les doubles quotes sont-elles importantes dans ce cas ?

Il y a une erreur à votre premier échappement ! ;)

En tous cas, merci beaucoup !
0
Utilisateur anonyme
9 janv. 2014 à 18:31
Les doubles (ou simples) quotes servent à indiquer à javascript qu'il s'agit d'une chaîne de caractères. Si tu n'en mets pas, ce qui commence par une lettre est un symbole (nom de variable, de fonction...) Dans ton cas précis, Javascript a pris "En" pour un nom de variable et "attente" l'a surpris car un deuxième symbole sans séparateur, ce n'est pas permis par la syntaxe de Javascript. Il a supposé que tu avais oublié la parenthèse qui fermait la liste des arguments de la fonction.
0
Ah en effet ! Je m'en souviendrai désormais !
Merci beaucoup !
0