我搜索了論壇,但沒有找到任何答案這個問題。Jquery自動完成 - 結合數據源 - 主要和後備
我正在使用jquery自動填充來填充表單域。
我目前正在使用來自XML文件的本地數據(代碼第一部分下面)。 這適用於本地查詢所需的答案,但如果本地XML不包含正確的查詢結果,我希望有一個後備數據源(JSON geoname - 請參閱下面的代碼第二部分)。
我試過並且未能合併這兩個數據源,所以爲了簡單起見,我將它們單獨發佈在此處。
他們都獨立工作 - 但如何將它們合併成一個結果字段? 另外,XML數據應該是主要選擇。
代碼的一部分ONE
代碼爲XML本地源
$(document).ready(function() {
var myArr = [];
$.ajax({
type: "GET",
url: "airports.xml",
dataType: "xml",
success: parseXml,
complete: setupAC,
failure: function(data) {
alert("XML File could not be found");
}
});
function parseXml(xml)
{
//find every query value
$(xml).find("state").each(function()
{
//you are going to create an array of objects
var thisItem = {};
thisItem['label'] = $(this).attr("label") + ', ' + $(this).attr("country");
thisItem['value'] = $(this).attr("iata");
myArr.push(thisItem);
});
}
function setupAC() {
$("#city").autocomplete({
source: myArr,
minLength: 3,
select: function(event, ui) {
$("#city").val(ui.item.iata);
$("#qf").submit();
}
});
}
});
部分代碼一個airports.xml文件片段
<states>
<state label="London Heathrow" iata="LHR" country="UK" />
<state label="Syndey" iata="SYD" country="Australia" />
....
代碼部分一個搜索表單代碼
<label for="city">From</label></td>
CODE第二部分 下面是使用JSON從GEONAMES
$(function() {
function log(message) {
$("<div/>").text(message).prependTo("#log");
$("#log").attr("scrollTop", 0);
}
$("#city").autocomplete({
source: function(request, response) {
$.ajax({
url: "http://ws.geonames.org/searchJSON",
dataType: "jsonp",
data: {
featureClass: "P",
style: "full",
maxRows: 20,
name_startsWith: request.term
},
success: function(data) {
response($.map(data.geonames, function(item) {
return {
label: item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName,
value: item.name
}
}));
}
});
},
minLength: 2,
select: function(event, ui) {
log(ui.item ?
"Selected: " + ui.item.label :
"Nothing selected, input was " + this.value);
},
open: function() {
$(this).removeClass("ui-corner-all").addClass("ui-corner-top");
},
close: function() {
$(this).removeClass("ui-corner-top").addClass("ui-corner-all");
}
});
});
再次感謝您的幫助 - 非常感謝。 – SolMan