bilden json von coldfusion-Abfrage für die Verwendung in jquery autocomplete

Bin ich überfragt. Ich habe eine vorhandene Funktion zur automatischen Vervollständigung, die arbeitete beim Aufruf von einer ColdFusion-autosuggest-Eingang. Nun, ich bin versucht zu konvertieren, die Seite zu benutzen eine jQuery-autocomplete-input, und nicht, damit es funktioniert. Hier ist die vorhandene Funktion, im autosuggest.cfc:

<cffunction name="lookupSerialNumber" access="remote" returntype="Array" >
    <cfargument name="search" type="any" required="false" default="">

    <!--- Define variables --->
    <cfset var data="">
    <cfset var result=ArrayNew(1)>

    <!--- Do search --->
    <cfquery name="data">
        SELECT DISTINCT SERIAL_NUMBER
        FROM myTable
        WHERE SERIAL_NUMBER LIKE '%#trim(ARGUMENTS.search)#%'
        ORDER BY SERIAL_NUMBER
    </cfquery>

    <!--- Build result array --->
    <cfloop query="data">
        <cfset ArrayAppend(result, list)>
    </cfloop>

    <!--- And return it --->
    <cfreturn result />
</cffunction>

Wenn ich es von meinem AutoVervollständigen die Eingabe nach der Eingabe von "01", zeigt die Konsole eine Antwort wie diese:

   ["0000003001","0100002000","0100002001","0100002002","0100002003","0100002004",7300000100,7300000101,7300000102,7300000103,7300000104,7300000105,7300000107,7300000108,7300000109,7300000110,7300000111,7300000112]

Beachten Sie, dass die ersten sechs Reaktionen sind innerhalb von doppelten Anführungszeichen, während der rest nicht. Die Autovervollständigung zeigt die ersten sechs Antworten, aber der rest nicht.

So, dass ist mein erstes problem. Das zweite ist, dass ich die Antwort injiziert sowohl den text als auch der Wert der Eingabe; derzeit wird nur der text zeigt die Antwort. Ich bin nicht überrascht, bin ich nur zurückgeben eines einzelnen Wert. Allerdings kann ich nicht herausfinden, wie dies zu erreichen.

Habe ich versucht, die Initialisierung der autocomplete mit der parse-Funktion, etwa so:

$(document).ready(function(){
        $('#myInputID').autocomplete(
            {source: function(request, response) {
                $.ajax({
                    url: "cfc/autoSuggest.cfc?method=lookupSerialNumber>&returnformat=json",
                    dataType: "json",
                    data: {
                      search: request.term,
                      maxRows: 10
                    },
                    success: function(data) {
                      response(data);
                    }                   
                })
            },
            parse: function(data){
                return $.map(data, function(item) {
                    return { data: item, value: item, result: item };
                });
            }
        });
    });

aber dies bringt nichts. Da die parse-Funktion ist nicht in der autocomplete-API, ich bin im Blindflug hier.

Dachte ich, dass diese Probleme im Zusammenhang genug, um nicht teilen Sie in zwei Fragen; lassen Sie mich wissen, wenn Sie denken, ich sollte. Wie immer vielen Dank.

  • Ich werde den rest überlassen Sie den anderen besser qualifiziert sind 😉 Aber das zitieren ist wohl aufgrund der impliziten Konvertierung. Die ersten sechs Werte sind offensichtlich nicht zahlen, weil Sie beginnen mit einer führenden "0". Der rest sind wahrscheinlich behandelt werden als numerische.
  • Die AutoVervollständigen - (und die OP ajax, für diese Angelegenheit) erwartet json zurück. Es ist nicht immer es. Die autcomplete braucht auch eine label oder value Feld oder beide zum füllen der input.
  • Macht Sinn. Ich dachte, es sollte in json - format. Aber nicht viel mehr zu bieten als nur das 😉
InformationsquelleAutor earachefl | 2011-10-18
Schreibe einen Kommentar