这有点复杂,所以请耐心等待...
我正在构建一个网页,用户可以在其中在地图上添加不同的位置。该应用程序使用谷歌地图 api。
添加的位置通过 ajax 发送到 php 页面,它们存储在会话变量中。然后另一个功能打印出位置,以便用户可以看到他/她添加的位置列表。
当用户添加了 x 个位置时,他们命名了他们创建的地图,填写表格,然后将 fom 发送到存储位置的同一 php 页面。发送表单时,位置以及表单信息都存储在数据库中。
一切正常,但用户还可以选择在创建地图时通过单击地图上的位置标记来删除位置。这个点击事件发送一个带有位置的 lat 和 lgn 的 ajax 帖子,然后从保存位置信息的会话中删除这个特定的位置。
然后该位置也会从添加了位置的列表中消失。
这也可以正常工作,但是当我尝试保存表单(也通过 ajax)时,什么也没有发生。表单也通过 ajax 发送。
所以,总结一下:如果我在发送表单之前不删除任何位置,一切都会正常工作,但如果我删除一个位置,那么它就不起作用。
如果有人可以指导我正确了解问题所在的方向,我当然会提供示例代码。
编辑
好的,这是我添加两个位置时的响应: 由于谷歌地图的原因,响应被编码为 xml。
<markers><marker titel="Test" comment="Test" lat="59.3082270911156" lng="18.060922622680664" name="" type="Parkering" score="3" /><marker titel="test2" comment="test2" lat="59.3082034749666" lng="18.060929998755455" name="" type="Parkering" score="5" /></markers>
如果我现在保存地图+表格,它将正常工作。
这是我从地图中删除标记后的响应:
<markers><marker titel="Test" comment="Test" lat="59.3082270911156" lng="18.060922622680664" name="" type="Parkering" score="3" /></markers>
对我来说它看起来很好。
这是当用户单击标记时触发的功能(即删除它)
function close(marker2, lati, lngi, infoWindow, map) {
google.maps.event.addListener(marker2, "click", function() {
marker2.setMap(null);
infoWindow.close(map, marker2);
$.ajax({
type: 'GET',
url: 'test3.php',
data: "lati=" + lati + "&lngi=" + lngi,
success: function(data) {
printResult(data);
$('#send').unbind();
}
});
});
};
这是从会话中删除位置的函数:
$val1 = $_GET['lati'];
$val2 = $_GET['lngi'];
$newarray = removeElementWithValue($_SESSION['infomarker'], "lat", "lng", $val1, $val2);
function removeElementWithValue(&$array, $key1, $key2, $value1, $value2){
foreach($array as $subKey => $subArray){
if($subArray[$key1] == $value1) {
if($subArray[$key2] == $value2)
unset($array[$subKey]);
}
}
return $array;
}
我没有收到 js 错误,正如您在上面看到的删除功能工作正常,我得到了一个健康的响应。