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

franksh Messages postés 54 Statut Membre -  
jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   -
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

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    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
    1. franksh Messages postés 54 Statut Membre 1
       
      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
      1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831 > franksh Messages postés 54 Statut Membre
         
        Côté JavaScript ou côté PHP il te suffit de supprimer le dernier caractère avant de faire ta recherche
        0
  2. franksh Messages postés 54 Statut Membre 1
     
    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
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      Si tu ne nous montre pas le code complet exact que tu as testé impossible pour nous de t'aider à le corriger
      0
  3. franksh Messages postés 54 Statut Membre 1
     
    $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
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      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