使用jQuery,JSON和id变量的Coffee Script Autocomplete

时间:2012-06-24 03:14:50

标签: json jquery-ui coffeescript

我有点卡在这里,似乎无法让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']作为源代码似乎工作正常。

2 个答案:

答案 0 :(得分:1)

假设您的数据正如上图所示返回,则ui.item.id是要访问的正确属性。

我把你的榜样弄得一团糟。尝试使用console.log()console.dir()来调试属性。

http://jsfiddle.net/fMWqU/

如果你还没有运气,那么问题可能就是你的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)
})