2017-08-21 1 views
0

Also, ich habe diese Anfrage:Ajax Suchfeld zeigt Ergebnisse von den letzten Antrag

var searchResults = new Array(); 

var ajaxRequest = function (value, type) { 
    if (typeof(type) === "undefined") 
     type = "default"; 
    var ajaxData = { 
     "title" : value, 
     "limit" : getLimit(), 
     "offset" : getOffset() 
    } 
    recentRequest = $.ajax({ 
     type : "GET", 
     url : getAjaxUrl(), 
     dataType : "json", 
     contentType : "application/json; charset=utf-8", 
     data : ajaxData, 
     beforeSend : function (data) 
     { 
      if (searchResults[value] != undefined) 
      { 
       (type === "pagination") ? ajaxSuccessPagination(searchResults[value], ajaxData) : ajaxSuccess(searchResults[value], ajaxData); 
       return false; 
      } 
     }, 
     success : function (data) { 
      searchResults[value] = (data); 
      (type === "pagination") ? ajaxSuccessPagination(data, ajaxData) : ajaxSuccess(data, ajaxData); 
     }, 
     error : function (data) { 
      ajaxError(data); 
     } 
    }); 
} 

die, wenn Sie ‚USB‘ geben und nehmen Sie sich nach mit der Eingabe ‚Bleistift‘ es die usb Ergebnisse zuerst während zeigen Sie haben einen Stift ausgefüllt, jetzt möchte ich es so machen, dass es prüft, ob die Ergebnisse die gleichen wie die aktuell eingegebenen Werte sind. Kann mir jemand helfen?

Dank

+0

Sie den Ajax-Aufruf mit auf keyup Ereignisse Ihres Eingabefeldes binden können –

+0

@JPKim ich das schon so hatte, dass es die erste Anforderung abbrechen würde, wenn Du hast Backspace gedrückt, aber das ist natürlich nicht der richtige Weg. Ich möchte es überprüfen, ob die Ergebnisse für die Benutzereingabe relevant sind – Niickles

+0

@Nickies, ich bin mir nicht sicher, ob ich richtig verstanden habe, was Sie wollen. Sie möchten die Ergebnisse nicht dynamisch während der Eingabe anzeigen, sondern nach dem Tippen, oder? Sie können dies mit einer "Suche" -Schaltfläche oder dem Unschärfeereignis von jquery tun oder die Eingabetaste drücken. –

Antwort

0

ich noch nicht sicher bin, ob diese sind, was Sie wollen, aber eigentlich sowieso,

1), wenn Sie eine keywords Wörterbuch haben (die Sie die Suchergebnisse angezeigt werden sollen nur für gültige Schlüsselwörter) :

  • die Server-Seite (getAjaxUrl()) ändern, wenn die Eingabezeichenfolge ist gültiges Schlüsselwort und das Rück anderen Wert (zB „FALSCH“ oder „ungültig“, alles, was in den normalen Suchergebnissen unterscheiden können) zu überprüfen, ob Die Eingabezeichenfolge befindet sich nicht im Wörterbuch.
  • auf "keyup" -Ereignis, überprüfen Sie, ob das Ergebnis "FALSE (oder etwas, was Sie wollen)", und behalten Sie das vorherige Ergebnis wenn ja, oder ersetzen Sie die Suchergebnisse durch neue, wenn das Ergebnis nicht "FALSE" ist.

2), wenn Sie nicht über Wörterbuch Keywords und Sie wollen einfach nur leer Suchergebnisse zu vermeiden:

  • überprüfen, ob Ajax-Suchergebnis mehr als eine Zeile enthält (oder eine andere Sache, die Sie kann die Daten überprüfen) und das vorherige Ergebnis beibehalten, wenn keine Ergebnisse vorhanden sind, oder die Suchergebnisse ersetzen, wenn das Ergebnis mehr als n Zeilen enthält.
+0

Also, ich will es überprüfen, ob die Benutzereingabe die gleiche ist wie die angezeigte Produktliste ... wenn es nicht I ist Ich möchte die Ergebnisse verstecken – Niickles

+0

@Nickles, ich denke, es ist sehr schwierig zu erreichen, was Sie wollen, es sei denn, Sie haben ein vordefiniertes Schlüsselwörter Wörterbuch (oder extrahieren sie aus den Artikelnamen). Sie wissen nicht, Stichwort "Stift" ist ungültig, während "Bleistift" gültig ist, wenn Sie kein Wörterbuch haben, das nur "USB", "Stift" und andere Schlüsselwörter enthält, die Sie für gültig halten. So erstellen Sie Ihr eigenes Wörterbuch (in Tabelle, Textdatei oder jedes Format, das Sie bevorzugen) zuerst und implementieren 1) -Methode, wenn es das ist, was Sie wollen. - Sie müssen das auf Ihre Artikeldaten abgestimmte Wörterbuch auf dem neuesten Stand halten. –

0

schaffte es zum Laufen zu bringen, trotzdem danke

var ajaxRequest = function (value, type) { 
     if (typeof(type) === "undefined") 
      type = "default"; 
     var ajaxData = { 
      "title" : value, 
      "limit" : getLimit(), 
      "offset" : getOffset() 
     } 

     $.ajax({ 
      type : "GET", 
      url : getAjaxUrl(), 
      dataType : "json", 
      contentType : "application/json; charset=utf-8", 
      data : ajaxData, 
      beforeSend : function (data) 
      { 
       if (searchResults[value] != undefined) 
       { 
        (type === "pagination") ? ajaxSuccessPagination(searchResults[value], ajaxData) : ajaxSuccess(searchResults[value], ajaxData); 
        return false; 
       } 
      }, 
      success : function (data) { 

       searchResults[value] = (data); 
       if (document.getElementById('search').value == data.searched) 
       { 
        (type === "pagination") ? ajaxSuccessPagination(data, ajaxData) : ajaxSuccess(data, ajaxData); 
       } 

      }, 
      error : function (data) { 
       ajaxError(data); 
      } 
     }); 
    } 
Verwandte Themen