Pourquoi Javascript ne fonctionne-t-il pas sur la ligne suivante?

<?php
echo "<a href='admin-advertiser-delete.php?supplier=$row[adv_id]' onclick='if (!confirm('Are you sure?')) return false;'><i class='fa fa-times'></i></a>";
?>
0
Rana Pratap 11 avril 2018 à 14:09

3 réponses

Meilleure réponse

Les citations doivent être échappées

  1. onclick=\"if (!confirm('Are you sure?')) return false;\"
  2. mieux onclick=\"return confirm('Are you sure?')\"
  3. BEAUCOUP mieux: NE JAMAIS avoir de lien GET supprimer des choses car une visite de Google Bot va tuer votre base de données

echo "<a href='javascriptneeded.html' onclick=\"if (confirm('Are you sure?') location = 'admin-advertiser-delete.php?supplier=$row[adv_id]'; return false;\"><i class='fa fa-times'></i></a>";

  1. MEILLEURE:

echo "<a href='javascriptneeded.html' class='deleteAdv' data-id='$row[adv_id]'><i class='fa fa-times'></i></a>";

En utilisant

document.querySelectorAll(".deleteAdv").forEach(function(link) {
  link.onclick=function() {
    if (confirm("Are you sure") {
      location = "admin-advertiser-delete.php?supplier="+encodeURIComponent(this.getAttribute("data-id"));
    }
    return false;
  }
});
3
mplungjan 11 avril 2018 à 11:28

Je vous suggère d'utiliser la syntaxe HEREDOC pour vous débarrasser du problème des échappements entre guillemets:

<?php
echo <<<EOD
<a href='admin-advertiser-delete.php?supplier={$row[adv_id]}' onclick='if (!confirm("Are you sure?")) return false;'><i class='fa fa-times'></i></a>
EOD;
?>

Voir le lien pour la documentation: http: / /php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc

Notez que vous n'aurez pas besoin d'échapper aux guillemets, mais vous devrez utiliser les bons: onclick='confirm("Ok?")' est correct, onclick='confirm('Ok?')' ne l'est pas.

J'espère que cela aide.

0
Takit Isy 11 avril 2018 à 11:36

Vous n'échappez pas à vos citations. Dans cette partie:

onclick='if (!confirm('Are you sure?')) return false;'

L'analyseur html voit le 'avant " êtes-vous sûr " comme la citation de fin, l'interprétant donc comme ceci:

onclick='if (!confirm('

Par conséquent, vous devez échapper à vos citations et cela devrait fonctionner:

 onclick='if (!confirm(\'Are you sure?\')) return false;'
1
user3053216 11 avril 2018 à 11:16