【发布时间】:2013-03-03 18:31:07
【问题描述】:
这有点复杂,所以请耐心等待......
我正在构建一个网页,用户可以在其中在地图上添加不同的位置。该应用程序使用谷歌地图 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 错误,正如您在上面看到的,删除功能工作正常,我得到了一个健康的响应。
【问题讨论】:
-
我想你想包含ajax调用的代码,表单的html然后可能是处理ajax调用的php。
-
您需要发布您的代码,这就像不看车就告诉机械师您的车坏了。
-
是的,我明白这一点,但我希望我的一般描述就足够了。这是相当多的代码。
-
@user1009453 根据我的回答,调试信息显示什么?
-
我现在添加了一些代码...我根本没有收到任何错误消息。