在这个jQuery自动完成示例中,我需要更改什么才能使它与我的JSON url一起工作?

在这个jQuery自动完成示例中,我需要更改什么才能使它与我的JSON url一起工作?,jquery,json,autocomplete,Jquery,Json,Autocomplete,我在看 我不知道这段代码有多少取决于返回的JSON数据的结构 例如,下面有一行: name_startsWith: request.term name_是从其他地方定义的函数开始的,还是某种隐式函数 它所指的需求术语是什么?我在html文档中找不到其他地方提到的文本术语 我想尝试将我自己的JSON url替换到示例中,看看它是否有效,但我不知道示例中有多少内容需要根据JSON响应数据的结构进行更改 name_startsWith是要传递的变量的名称 request.term很可能是城市输入字段

我在看

我不知道这段代码有多少取决于返回的JSON数据的结构

例如,下面有一行:

name_startsWith: request.term
name_是从其他地方定义的函数开始的,还是某种隐式函数

它所指的需求术语是什么?我在html文档中找不到其他地方提到的文本术语

我想尝试将我自己的JSON url替换到示例中,看看它是否有效,但我不知道示例中有多少内容需要根据JSON响应数据的结构进行更改


name_startsWith是要传递的变量的名称

request.term很可能是城市输入字段的值。

数据参数只是一个POJO普通旧Javascript对象,它被序列化为JSON字符串,并作为参数集合发送到服务器

本质上,您发布了4个参数:featureClass、style、maxRows和name_startsWith值p、full、12和request.term的值,我相信这是由autocomplete小部件通过request参数提供的

然后,服务器处理从客户端获取的参数并返回另一个JSON字符串,这次包含以下对象:

jsonp1290623850128({
    "totalResultsCount": 55,
    "geonames": [{
        "countryName": "Indonesia",
        "adminCode1": "30",
        "fclName": "city, village,...",
        "score": 19.488441467285156,
        "countryCode": "ID",
        "lng": 106.4183333,
        "adminName2": "",
        "adminName3": "",
        "fcodeName": "populated place",
        "adminName4": "",
        "timezone": {
            "dstOffset": 7,
            "gmtOffset": 7,
            "timeZoneId": "Asia/Jakarta"
        },
        "toponymName": "Test",
        "fcl": "P",
        "continentCode": "AS",
        "name": "Test",
        "fcode": "PPL",
        "geonameId": 1959830,
        "lat": -6.1052778,
        "adminName1": "West Java",
        "population": 0
    },
    {
        "alternateNames": [{
            "name": "http://en.wikipedia.org/wiki/Pomerode",
            "lang": "link"
        }],
        "countryName": "Brazil",
        "adminCode1": "26",
        "fclName": "city, village,...",
        "score": 18.81304168701172,
        "countryCode": "BR",
        "lng": -49.17694444,
        "adminName2": "",
        "adminName3": "",
        "fcodeName": "populated place",
        "adminName4": "",
        "timezone": {
            "dstOffset": -3,
            "gmtOffset": -2,
            "timeZoneId": "America/Sao_Paulo"
        },
        "toponymName": "Testo",
        "fcl": "P",
        "continentCode": "SA",
        "name": "Testo",
        "fcode": "PPL",
        "geonameId": 3453245,
        "lat": -26.74055556,
        "adminName1": "Santa Catarina",
        "population": 21898
    },
    // ---- [snip] ----
    {
        "countryName": "Turkey",
        "adminCode1": "23",
        "fclName": "city, village,...",
        "score": 13.442560195922852,
        "countryCode": "TR",
        "lng": 39.126705,
        "adminName2": "",
        "adminName3": "",
        "fcodeName": "populated place",
        "adminName4": "",
        "timezone": {
            "dstOffset": 3,
            "gmtOffset": 2,
            "timeZoneId": "Europe/Istanbul"
        },
        "toponymName": "Testek",
        "fcl": "P",
        "continentCode": "AS",
        "name": "Testek",
        "fcode": "PPL",
        "geonameId": 299236,
        "lat": 38.458786,
        "adminName1": "Elazığ",
        "population": 0
    }]
});
这基本上是一个具有两个属性的对象:totalResultsCount(以整数形式包含结果数)和geonames(包含带有特定属性的结果对象数组,如countryName、name、population等)

此JSON对象在$.ajax函数内的success函数中使用,您可以在其中迭代各个对象:

for(var i = 0; i < data.geonames.length; i++) {
  var current = data.geonames[i]; // the current object
}
示例中的map函数只是将每个结果转换为一个包含标签和值属性的新对象,并将它们收集到一个数组中,该数组被传递到响应函数中,该函数由小部件传递到AJAX调用中

因此,为了回答您的问题,如果您只是想更改URL,服务需要使用与我粘贴的相同JSON结构进行回答。如果没有,您可以更改success函数以匹配服务返回的JSON结构

for(var i = 0; i < data.geonames.length; i++) {
  var current = data.geonames[i]; // the current object
}