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