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 einelabel
odervalue
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 😉
Du musst angemeldet sein, um einen Kommentar abzugeben.
Setzen Sie Ihre Abfrage-Ergebnisse in eine Struktur und hinzufügen, dass ein array. Konvertieren von json. Der autocomplete wird erwartet, json zurück und entweder eine
label
oder einevalue
Feld oder beides. Hier ist ein Beispiel:Können Sie die
serializeJSON
Funktion, wenn es verfügbar ist, in welcher version von CF, die Sie verwenden. Wenn nicht, erstellen der json-string von hand.Hier ist ein tut: http://www.jensbits.com/2010/03/18/jquery-ui-autocomplete-with-coldfusion/
Kam gerade über diese Suche für eine ähnliche Lösung, aber ich muss sagen, das zurückgeben des Arrays von structs nicht Folgen die meisten Konventionen für JSON AJAX zurück, sogar nach der Verwendung von serializeJSON.
Die andere Antwort gibt so etwas wie
in der Erwägung, dass in der Regel, die Sie wollen, um zu sehen,
So, hier ist meine angepasste version der code für diejenigen, die arbeiten müssen, um mit dem letzten format
Der Vorteil dieser Methode ist eine einfachere Analyse:
Während vor, Sie müssten, um geben Sie den array DANN analysieren die einzelnen JSON-Einträge...
CFRemoting in OO-Mode Mit Mura CMS Hier ...
snProxy.cfc
JQuery Binden ...