Ajax帖子表单不加载

时间:2013-03-03 18:31:07

标签: php jquery session

这有点复杂,所以请耐心等待......

我正在构建一个网页,用户可以在地图上添加不同的位置。该应用使用谷歌地图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错误,正如你在上面看到的那样删除功能正常工作,我得到了一个健康的回应。

1 个答案:

答案 0 :(得分:0)

听起来您已经确定了问题,因为数据和/或PHP端点在删除后处理保存时出错。

如果我要查看你的代码,我将如何调试它:

  1. 打开我的网络检查员的网络标签,检查通过AJAX发送的数据,确保结构正确。
  2. 在PHP端点中,我会var_dump($_POST)检查输出。这将通过网络发送,您可以在Web检查器中查看输出。
  3. 打开控制台以检查是否有任何JS错误。
  4. 如果你做了这三件事,你很可能会发现这个错误。祝你好运。