У меня проблемы с анализом моих данных JSON в автозаполнении jQuery.Мой JSON происходит из этого кода:
<cfset theQ = lcase(q)>
<cfquery datasource="#source#" name="qry" maxrows="20">
select top 10 lastname
from info
where
lower(lastname) like '#theQ#%'
order by lastname
</cfquery>
<!---
Before we can serialize the query, we need to convert
it to an array of structs.
--->
<cfset rows = [] />
<!--- Loop over the query to convert it. --->
<cfloop query="qry">
<!--- Create a row struct. --->
<cfset row = {} />
<!--- Add each column to our struct. --->
<cfloop
index="column"
list="#qry.columnList#"
delimiters=",">
<cfset row[ column ] = qry[ column ][ qry.currentRow ] />
</cfloop>
<!--- Append the row struct to the row array. --->
<cfset arrayAppend( rows, row ) />
</cfloop>
<!---
Now that we have converted our query to an
array of structs, we can serialize it using the
serializeJSON() method.
--->
<cfset serializedQuery = serializeJSON( rows ) />
<cfoutput>#serializedQuery#</cfoutput>
Я преобразовал свой запрос в массив структур и затем сериализовал его в JSON.Теперь синтаксический анализ этого JSON в автозаполнении jQuery не работает.Получаемые данные выглядят так:
[{"lastname":"abc"},{"lastname":"def"},{"lastname":"ghi"}]
Вот код для автозаполнения:
$(document).ready(function() {
$("#name").autocomplete("data/name.cfm",{
minChars:1,
delay:10,
autoFill:false,
matchSubset:false,
matchContains:1,
cacheLength:10,
selectOnly:1,
dataType: 'json',
parse: function(data) {
var parsed = [];
var dataParsed = $.parseJSON(data);
for (var i = 0; i < dataParsed.length; i++) {
parsed[parsed.length] = {
data: dataParsed[i],
value: dataParsed[i].lastname,
result: dataParsed[i].lastname
};
}
return parsed;
},
formatItem: function(item) {
return item;
}
});
Когда я набираю текстовое поле, я получаю всю строку JSON в качестве поискарезультат.Я искал другие коды для разбора, но все еще не могу заставить его работать.Любая помощь?Спасибо.
Ссылки: Саймон Уотли за автозаполнение;Бен Надель для запроса к массиву структур и сериализации в JSON