通过JSON和JQUERY自动完成将PHP数组发送到Javascript数组
我有完整的jquery自动完成代码。我试图将返回数组的一些元素传递给javascript数组,然后从DIV ID中填充一个值 我在下面的评论中按照SCX的建议修改了代码,非常感谢SCX,但我们还没有做到这一点。以下是修改后的代码:通过JSON和JQUERY自动完成将PHP数组发送到Javascript数组,javascript,php,jquery,arrays,json,Javascript,Php,Jquery,Arrays,Json,我有完整的jquery自动完成代码。我试图将返回数组的一些元素传递给javascript数组,然后从DIV ID中填充一个值 我在下面的评论中按照SCX的建议修改了代码,非常感谢SCX,但我们还没有做到这一点。以下是修改后的代码: jQuery(document).ready(function(){ $('#edit-ad-location').autocomplete({ source:'/postcodes-latlong.php',
jQuery(document).ready(function(){
$('#edit-ad-location').autocomplete({
source:'/postcodes-latlong.php',
minLength:2,
response: function( event, ui ) {
//ui have response from you call
//console.log(ui);
//assign your values like this
$('#geo-search-lat').val( ui[0]['geo-search-lat'] );
$('#geo-search-lng').val( ui[0]['geo-search-lng'] );
}
});
});
这将返回以下错误:
Uncaught TypeError: Cannot read property 'geo-search-lat' of undefined
我应该提到,数组可以包含多个记录条目,而不仅仅是一个
{"0":
{"id":"384047",
"label":"4503, DAKABIN",
"value":"4503, DAKABIN",
"geo-search-lat":"-27.226474",
"geo-search-lng":"152.980732"},
"1":
{"id":"384062",
"label":"4503, GRIFFIN",
"value":"4503, GRIFFIN",
"geo-search-lat":"-27.272654",
"geo-search-lng":"153.025911"},
"2":
{"id":"384077",
"label":"4503, KALLANGUR",
"value":"4503, KALLANGUR",
"geo-search-lat":"-27.25075",
"geo-search-lng":"152.992606"},
"3":
{"id":"384092",
"label":"4503, KURWONGBAH",
"value":"4503, KURWONGBAH",
"geo-search-lat":"-27.225828",
"geo-search-lng":"152.947552"},
"4":{
"id":"384107",
"label":"4503, MURRUMBA DOWNS",
"value":"4503, MURRUMBA DOWNS",
"geo-search-lat":"-27.258672",
"geo-search-lng":"153.006916"},
"5":{
"id":"384122",
"label":"4503, WHITESIDE",
"value":"4503, WHITESIDE",
"geo-search-lat":"-27.255364",
"geo-search-lng":"152.929729"
}
}
因此,我尝试修改SCX的两行漂亮的代码,如下所示:
$('#geo-search-lat').val( ui[]['geo-search-lat'] );
$('#geo-search-lng').val( ui[]['geo-search-lng'] );
$('#geo-search-lat').val( ui['geo-search-lat'] );
$('#geo-search-lng').val( ui['geo-search-lng'] );
也像这样:
$('#geo-search-lat').val( ui[]['geo-search-lat'] );
$('#geo-search-lng').val( ui[]['geo-search-lng'] );
$('#geo-search-lat').val( ui['geo-search-lat'] );
$('#geo-search-lng').val( ui['geo-search-lng'] );
但这两种方法都不管用
比如说,如果我从“自动完成”下拉菜单中选择4503,KALLANGUR,,则关联的“geo search lat”和“geo search lng”数组元素为:
ui[2]['geo-search-lat']和ui[2]['geo-search-lng'],对吗
这是我删除ui[0]并用ui[]替换它的思路-但这不起作用
我需要某种方法将记录编号“x”发送到ui['x']
TIA。您必须在自动完成通话中使用它,我认为活动将是最好的选择
$('#edit-ad-location').autocomplete({
source:'/postcodes-latlong.php',
minLength:2,
response: function( event, ui ) {
//ui have response from you call
//console.log(ui);
//assign your values like this
$('#geo-search-lat').val( ui[0]['geo-search-lat'] );
$('#geo-search-lng').val( ui[0]['geo-search-lng'] );
}
});
如果您想知道代码不起作用的原因,请查看:我终于找到了正确的语法并使代码起作用。我不得不将JSON返回的“geo search lat”和“geo search lng”的名称更改为“纬度”和“经度”。jQuery ui.item.geo-search-lat和ui.item.geo-search-lng似乎由于连字符而失败 以下是从标签中获取jquery数组对象值的工作代码:
<script>
jQuery(document).ready(function(){
$('#edit-ad-location').autocomplete({
source:'/postcodes-latlong.php',
select: function(event, ui) {
$('#geo-search-lat').val( ui.item.latitude );
$('#geo-search-lng').val( ui.item.longitude );
}
});
});
</script>
此自动完成调用在和中返回正确的值,以及自动填充中的值。查看您的数组,您可能需要使用myArray[0]['geo-search-lat']。有两个问题,一个是他如何使用他的数组,另一个是他不知道自动完成调用是异步的,因此myArray在从服务器返回之前没有数据。