JSON自动完成JSON数组

时间:2013-03-25 17:06:44

标签: jquery json jquery-ui jsonp

我正在尝试在返回JSON数组的服务上使用JQuery Autocomplete(在mimetype application / json中)。 我的开发基于这个示例:http://jqueryui.com/autocomplete/#remote-jsonp从Geonames中检索JSON。 geonames示例中的正确json类似于

{"totalResultsCount":8387672,"geonames":[{"countryName":"Iran","adminCode1":"23","fclName":"mountain,hill,rock,... ","countryCode":"IR","lng":49.133333,"fcodeName":"mountain","toponymName":"Kūh-e Zardar","fcl":"T","name":"Kūh-e Zardar","fcode":"MT","geonameId":1,"lat":32.983333,"adminName1":"Lorestān","population":0}]}

不幸的是,我的服务仅提供以下内容:

["berlin; berlin-steglitz","berliner festspiele"]

我也试图解析数组,但即使我得到正确的Http 200并且我看到响应是正确的,我也无法解析数组或使用它。 来自JQuery的.ajex函数“成功”没有被调用(我想是因为它需要json内容并检索文本)而“complete”返回一个数据对象,没有方法来检索responseText或数据的内容。 我不能使用requesttype“text”,因为该服务在另一个域中,我打破了跨域模式。我的代码如下。

$(function() {
    $("#searchinput").autocomplete(
            {
                source : function(request, response) {

                    $.ajax(
                        {
                        url : "http://Mybackendservice.com/",
                        dataType : "jsonp",
                        data : {
                            query : request.term
                        },
                        complete : function(data) {
                            console.log(data);
                            for(i=0;i<data.length;i++){
                                console.log(data[i].parametername); /// do whatever you want here.
                            };
                            response($.map(data, function(n,i) {
                                return {
                                    label : n,
                                    value : i
                                }
                            }));
                        }
                    });
                },
                minLength : 2,
                select : function(event, ui) {
                    console.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");
                }
            });
});

任何人都有一些关于如何处理解析这样一个数组问题的建议吗?

1 个答案:

答案 0 :(得分:0)

JSONP请求需要服务在响应前添加回调函数的名称。 JSONP page on Wikipedia

提供了一些信息