我正在尝试在我们的网站上为Google Maps api制作过滤器,以便人们可以选择仅显示与已检查位置相关的信息。我不确定通过ajax传递无限参数的最佳方法,因为它相对较新。通过选中相应的复选框,可以选择每个位置。这是我的代码,我试图通过以下内容。
//Example Checkbox
<input type="checkbox" checked name="locationID1" class="locationID" value="47">
$(".layer-button").click(function(){
var form = $(this).parents('form:first');
var locationID = [];
var n = 0;
$(".locationID", form).each(function () {
if(this.checked){
// part I'm having troubles with.
locationID[n] = $(this).val();
n++;
}
});
var data = {
"action":"addLayer",
"map-try-ok":"1",
// part I'm having troubles with.
"location_id":locationID
}
$.ajax({
type: "POST",
url: "/ajax/map/map.php",
dataType: "json",
data: data,
success: function(data) {
jQuery.each( data, function( key, val ) {
geocoder = new google.maps.Geocoder();
var color = $("select[name=color]", form).val();
var address = val["address"];
geocoder.geocode( { 'address': address}, function(results, status) {
if(results){
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
icon: "../image/icons/map/icon_marker"+color+".png",
title: val["name"],
url: ""
});
}
});
});
},
error: function(){return false;}
});
});
如果我传递的是静态数字,那么代码很有用。
var data = {
"action":"addLayer",
"map-try-ok":"1",
"location_id":"47"
}
是否有通过ajax传递数据的最佳方法?我不确定是否可以在var数据的参数中运行每个函数?
更新:
我将所有这些信息传递给PHP脚本。 PHP返回信息到jquery工作正常,我对实际的Google Maps API本身没有任何问题。问题是从jquery传递[x]变量 - &gt; ajax - &gt; PHP
我尝试使用以下代码调用location_id,它完全传递了一大堆代码,让我相信数组的传递不起作用。
if(is_array($_POST['location_id'])){
foreach($_POST['location_id'] as $location_id){
echo "ID: ".$location_id."<br />";
}
}
答案 0 :(得分:0)
locationID
作为数组会在PHP脚本中为您提供$_POST['location_id']
数组。您可以使用foreach循环遍历它们
foreach ($_POST['location_id'] as $location_id){
//do something with $location_id
}
答案 1 :(得分:0)
简短回答:当前代码可以正常运行。
答案很长:
好吧伙计们,我很抱歉,我是ajax的新手,我发现了我的问题...在尝试测试是否正确传递时我将dataType从“json”更改为“html”,因为我不再返回数组,而是返回一个回显来打印到屏幕上。我没有意识到传递数组和返回数组都需要json,这就是为什么我永远无法使用方法。我最终在我的php错误日志中发现它试图点击代码并看到它实际上是从数组中传递变量。