Est-il possible d'exécuter une requête ajax a un certain caractère ?

Fermé
franksh Messages postés 54 Date d'inscription dimanche 8 juillet 2018 Statut Membre Dernière intervention 23 août 2024 - 4 janv. 2021 à 08:52
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 - 4 janv. 2021 à 17:49
Bonjour,


j'espère être au bon endroit du forum.

je fait cette requête qui s'exécute que une fois qu'on commence a taper n'importe quoi dans un champ, c'est que je veux se l'exécuter que si on taper ce caractère @ par exemple, que on peut écrire tout c'est qu'on veut rien ne se passe sauf si il détecte @.

  var url = 'ajax/search.php';

$('#search-box').on('keyup' , function(){
var query = $(this).val();

if(query.length > 0){
  $.ajax({
    type: 'POST',
    url: url,
    data: {
      query: query
    },
    success: function(data){
      $("#all-results").html(data).show();
    }
  });
}
});

j'espère avoir être clair dans mes explication.

merci d'avance.
A voir également:

3 réponses

jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
4 janv. 2021 à 09:42
Bonjour
Il te suffit de regarder quel keycode vient d'être entré et si il correspond au caractère souhaité, de faire la suite de ton mrogramme...
Regarde ça
https://www.w3schools.com/jsref/event_key_keycode.asp


1
franksh Messages postés 54 Date d'inscription dimanche 8 juillet 2018 Statut Membre Dernière intervention 23 août 2024 1
4 janv. 2021 à 14:52
Génial merci

sa fonctionne comme je veux

juste un petit soucis avec le var query

dans ma requête php je fait un
WHERE name LIKE :query
c'est qui prend en compte tout le caractère précédent saisi par ex : salut ca va alex@ est-il possible que de prendre en compte que alex ?
// Pour les gens qui cherche la même

 var url = 'ajax/test.php';

   $('#commente').on('keydown' , function(){

   var query = $(this).val();

   var key = event.keyCode;

   var id-hidden = document.getElementById("id-hidden").value;

   if (key == 48) {
     // alert(query);
     $.ajax({
       type: 'POST',
       url: url,
       data: {query : query, id-hidden: id-hidden},
       success: function(data){
         $("#alls-results").html(data).show();
       }
     });
   }
   });

/* 
une requête pour une mention vite fait dans le commentaire
*/
0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717 > franksh Messages postés 54 Date d'inscription dimanche 8 juillet 2018 Statut Membre Dernière intervention 23 août 2024
4 janv. 2021 à 15:21
Côté JavaScript ou côté PHP il te suffit de supprimer le dernier caractère avant de faire ta recherche
0
franksh Messages postés 54 Date d'inscription dimanche 8 juillet 2018 Statut Membre Dernière intervention 23 août 2024 1
Modifié le 4 janv. 2021 à 16:43
Oui que sa sois coté php ou js j'ai essayer d'utiliser
preg_replace_callback 
@ mais elle résoudre pas mon problème
0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
4 janv. 2021 à 16:45
Si tu ne nous montre pas le code complet exact que tu as testé impossible pour nous de t'aider à le corriger
0
franksh Messages postés 54 Date d'inscription dimanche 8 juillet 2018 Statut Membre Dernière intervention 23 août 2024 1
Modifié le 4 janv. 2021 à 16:53
$query = "Salut ca va alex@"; // le but est de récupérer  juste le mot alex

    function tested($reusl){
    return $reusl[1];
  }

  $query = preg_replace_callback('#@([A-Za-z0-9]+)#', 'tested', $query);

echo $query;
0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
4 janv. 2021 à 17:49
Si tu veux le dernier mot (qui se termine par un @ )
dans ce cas, la regex à utiliser serait du genre
$re = '#([A-Za-z1-9]+)@#i';
$str = 'Salut ca va alex@';

preg_match($re, $str, $matches, PREG_OFFSET_CAPTURE, 0);

// Print the entire match result
var_dump($matches);
0