这有点复杂,所以请耐心等待......
我正在构建一个网页,用户可以在地图上添加不同的位置。该应用使用谷歌地图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错误,正如你在上面看到的那样删除功能正常工作,我得到了一个健康的回应。
答案 0 :(得分:0)
听起来您已经确定了问题,因为数据和/或PHP端点在删除后处理保存时出错。
如果我要查看你的代码,我将如何调试它:
var_dump($_POST)
检查输出。这将通过网络发送,您可以在Web检查器中查看输出。如果你做了这三件事,你很可能会发现这个错误。祝你好运。