我将使用 SQL
生成的 PHP 脚本中的 JSON 数据返回到客户端的 jQuery.each()
,根据用户在过滤表单中选择的内容并单击提交,更新所有返回的 JSON
数据并将其显示为我的 Google map 上的标记。
问题是而不是将返回的 JSON
数据显示为新标记,它只是边界在已显示的标记上标记(页面最初加载时的默认标记)。
我在这里做错了什么?
我使用this jQuery plugin使用我的 Google map 。
我返回的 JSON 如下所示:
[{"Name":"John Smith","Address":"123 Fake St.", "Telephone":"50011111" ,"Lat":"coord values","Lng":"coord values"},{...repeat...},{}]
提交按钮的 Jquery:
$('#myform').on('submit', function(e) {
e.preventDefault();
var myData = $('#myform').serializeArray();
$.getJSON('phpscript.php', myData, function(json){
var theMarkers = json;
// alert(JSON.stringify(json));
$.each(theMarkers, function(i, val) {
$('#map_canvas').gmap('addMarker', { 'position': new google.maps.LatLng(val.Lat, val.Lng), 'bounds':true, 'icon':'mymarker.png' } ).click(function(){
$('#map_canvas').gmap('openInfoWindow', { 'content': '<h1>'+val.Name+'</h1>'+'<h2 style="color: grey">'+val.Address+'</h2><p style="color: green">'+val.Telephone+'</p>' }, this);
});
});
});
});
最佳答案
您确实意识到,在 $.each
函数中,i
是索引,val
是当前迭代中的对象。
您确定它不应该是 val.Name
、val.Address
等,因为这会访问 json 对象中的这些值,另一方面 i.name
可能只是当前索引,如 4.name
等。??
关于jquery - 从 PHP 返回的 JSON 未由 jQuery.each() 正确处理以在 Google map 上显示为新标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10803193/