2013-04-25 82 views
0

我可以將jquery ui自動完成與來自數據庫的源合併。怎麼樣,我想從準備JSON文件獲得源代碼,內容是這樣的: -從json文件jquery ui自動完成源

{"data":[{"id":"1","country_name_en":"USA","country_name_hk":"\u7f8e\u570b"},{"id":"2","country_name_en":"China","country_name_hk":"\u4e2d\u570b"},{"id":"3","country_name_en":"British","country_name_hk":"\u82f1\u570b"}]} 

我試圖修改jQuery的代碼如下: -

<script> 
$("#country").autocomplete({ 
    source: function(request,response) { 
     $.getJSON('../../database/country.json',{id: data.id},function(data){ 
      alert(data); 
     }) 
    } 
}); 
</script> 

但我認爲我沒有正確寫入格式。我應該如何改進從json文件中提取數據的方式?直到你告訴它通過調用函數response傳遞給你的源法所允許的自動完成值,這樣做

回答

0

自動完成將不會顯示任何內容。所以你應該這樣做:

$("#country").autocomplete({ 
    source: function(request,response) { 
     $.getJSON('../../database/country.json',{id: data.id},function(data){ 
      var choices = []; 
      for(var i=0;i<data.data.length;i++) { 
       choices.push(data.data[i].country_name_en); 
      } 
      response(choices); 
     }) 
    } 
}); 

也只是一個提示,你會通過命名一切「數據」來迷惑自己。

0

阿賈克斯可以用於此是指該article其中列出來自geonames.org國家(包含巨大的名單國家,州,地區)。這會以某種方式幫助你。

0

要想從JSON數據試試這個..

$("#country").autocomplete({ 
    source: function(request, response) { 
     $.getJSON('../../database/country.json', { id: data.id }, function(data) { 
      $.each(data, function(key, value) { 
       alert(value.country_name_en); // json data 
      }); 
     }); 
    } 
}); 
0

的問題是,你需要調用從阿賈克斯成功處理程序自動完成回調。

$(function() { 
    $("#country").autocomplete({ 
     source : function(request, response) { 
      $.getJSON('country.json', { 
       id : 1 
      }, function(data) { 
       var list = $.map(data.data, function(item, index) { 
        return { 
         id : item.id, 
         label : item.country_name_en 
        }; 
       }); 
       response(list); 
      }) 
     } 
    }); 
}) 

演示:Plunker