来自外部服务器的jQuery自动完成失败

时间:2012-09-20 03:45:11

标签: jquery autocomplete

您好我正在使用jQuery Autocomplete Library(因为没有更好的词)尝试在我一直在处理的页面上实现基本的自动完成功能。我已经设法通过在该页面上基本上使用示例代码的修改版本,通过从同一文件夹中的静态html页面获取json数据来使自动完成工作。这工作得很好。现在我试图从一个python脚本中获取数据,该脚本在谷歌应用引擎上本地化,可以吐出json数据。

以下是页面上原始输入的一些示例数据:

["foo", "bar"]

我已经多种方式打印数据以验证数据格式是否正确(抱歉,我不知道有任何确定的方法来测试它是否是有效的json数据)。

现在代码!这是处理自动完成功能的实际功能:

function suggest(textbox_data){
    $(textbox_data).autocomplete({
        source : function (request, response) 
        {
            var source_url = "http://localhost:8081/developers/add/jqueryResponse";
            //var data = "hello world"

            $.ajax({
                url: source_url,
                dataType: 'json',
                success: function (data) { 
                    response(data);
                }
            });
        }
    });
}

我将所有内容都放入函数的原因是因为我正在动态生成文本框。为了使一切清晰,这里是添加文本框的行。如果有人真的想要我可以添加文本框genoration的所有代码,但我很确定这不是问题。

$('#buttondiv').append('<div><label>Textbox #'+$counter+'</label><input type="text" name="textbox[]" class="textbox" value="" id="country" onkeyup="suggest(this);"/><div id="testdiv"></div></div>');

现在输入错误消息!当我在Firefox中运行脚本时(Chrome在本地使用$ .ajax功能时是一只母狗)我在尝试访问包含JSON数据的网页时从firebug收到错误:

GET http://localhost:8081/developers/add/jqueryResponse 200 136ms   jquery.min.js (line 16)

在文件的第16行,基本上包含脚本中的所有内容,因此它并没有真正缩小范围。无论如何,请帮助!

1 个答案:

答案 0 :(得分:0)

您的成功处理程序不完整。查看Demo page.

的源代码

成功处理程序应如下所示:

success: function( data ) {

        response( $.map( data.geonames, function( item ) 
{

return {label: item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName,Value: item.name}
                        }));
                    }
                });