我有点卡在这里,似乎无法让jQuery自动完成为我工作。我正在尝试从JSON文档中自动完成拉。
IE:
http://REMOTE_HOST/names.json
其中包括:
[{"label":"Brian House", "id" : 1},
{"label":"Joe Green", "id" : 2},
{"label":"Fisher Gennings", "id" : 3},
{"label":"Sheila Williams", "id" : 4},
{"label":"Brett Nelson", "id" : 5},
{"label":"Angie Katz", "id" : 6},
{"label":"Zoe Middleton", "id" : 7},
{"label":"Parker Jones", "id" : 9}]
我想要做的是在文本字段(user_friend_name)中使用标签自动完成,然后使用id填充隐藏字段(user_friend_name_id)。
#user_friend_name
#user_friend_name_id
我正在使用的咖啡脚本。
$(document).ready ->
$('#user_friend_name').autocomplete
source: "http://REMOTE_HOST/names.json"
select: (event,ui) -> $("user_friend_name_id").val(ui.item.id)
现在,我看到所有名称都有一个JSON拉,但在键入时没有选择或文件编制。使用标准数组['foo','food','trees']作为源代码似乎工作正常。
答案 0 :(得分:1)
假设您的数据正如上图所示返回,则ui.item.id
是要访问的正确属性。
我把你的榜样弄得一团糟。尝试使用console.log()
和console.dir()
来调试属性。
如果你还没有运气,那么问题可能就是你的json文件。
确保文档与脚本位于同一域中,以防止出现跨源错误。
我在过去也注意到,带有Windows行结尾的json文档会导致某些浏览器失败。
尝试定期$.ajax()
并在done()和fail()处理程序中使用console.dir()
。
xhr = $.ajax
url : 'http://REMOTE_HOST/names.json'
dataType : 'json'
xhr.done ->
console.log arguments
xhr.fail ->
console.log 'Fail! ', arguments
答案 1 :(得分:0)
我认为他们应该有价值而不是id属性。我不熟悉咖啡脚本,但我确信这很清晰:
$.getJSON("http://REMOTE_HOST/names.json", function(response) {
var newData = response.map(function(el) { return {label: el.label, value: el.id })
$('#user_friend_name').autocomplete
source: "http://REMOTE_HOST/names.json"
select: (event,ui) -> $("user_friend_name_id").val(ui.item.value)
})