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

Signaler
Messages postés
13
Date d'inscription
dimanche 8 juillet 2018
Statut
Membre
Dernière intervention
4 janvier 2021
-
Messages postés
30859
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 janvier 2021
-
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.

3 réponses

Messages postés
30859
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 janvier 2021
3 144
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


Messages postés
13
Date d'inscription
dimanche 8 juillet 2018
Statut
Membre
Dernière intervention
4 janvier 2021

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
*/
Messages postés
30859
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 janvier 2021
3 144 >
Messages postés
13
Date d'inscription
dimanche 8 juillet 2018
Statut
Membre
Dernière intervention
4 janvier 2021

Côté JavaScript ou côté PHP il te suffit de supprimer le dernier caractère avant de faire ta recherche
Messages postés
13
Date d'inscription
dimanche 8 juillet 2018
Statut
Membre
Dernière intervention
4 janvier 2021

Oui que sa sois coté php ou js j'ai essayer d'utiliser
preg_replace_callback 
@ mais elle résoudre pas mon problème
Messages postés
30859
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 janvier 2021
3 144
Si tu ne nous montre pas le code complet exact que tu as testé impossible pour nous de t'aider à le corriger
Messages postés
13
Date d'inscription
dimanche 8 juillet 2018
Statut
Membre
Dernière intervention
4 janvier 2021

$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;
Messages postés
30859
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 janvier 2021
3 144
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);