为什么从AJAX返回的值几乎立即消失?

时间:2014-11-07 20:26:11

标签: javascript php jquery html ajax

这是我的服务器端代码:

modify_emp.php

<?php
    echo $_POST[id];
?>

这是我的html页面中的Javascript:

<script>

  $(document).ready(function () {

  var alreadyClicked = false;

  $('.element').hover( 
    //mouseenter function
    function(){
        $('.element').click(
            function(){
            $(this).css("color","blue");
            var objName = $(this).attr('name');
            var objColumn = $(this).attr('id');
            if(!alreadyClicked){
                alreadyClicked = true;
                $(this)
                .prepend('<form method="POST" class="newInput"><input type="text" name="newInput" style="width:140px"></input></form>');
                var elemento = $(".newInput");
                var position = elemento.position();
                $(".newInput").css({
                    'position': 'absolute',
                    'top': position.top + 15,
                    'opacity':0.9,
                    'z-index':5000,
                })
                .focus();
                //on enter keypress
                $(document).keypress(function(e) {
                    if(e.which == 13) {

                        $.ajax({

                            url: 'modify_imp.php',
                            type: 'post',
                            data: { id : objName, column : objColumn },
                            success: function(data, status){
                                $("#debug").html(data);
                            }

                        });
                    }
                });
             } //if (!alreadyClicked) end
        }); //end mouseenter function
   },
   //mouseleave function
   function () {
    alreadyClicked = false;
    $(this).css("color","red");
    $(".newInput").remove();
   }
 ); //end .hover

});

我的html页面末尾的debug<div id="debug"> </div>,我想在服务器上显示我的回复。当我按“输入”时我实际上可以在div中看到0.1s的值,但随后它就会消失。

我已经尝试将返回值传递给本地或全局变量,但它没有用。 由于某种原因,response内的值在0.1秒后丢失,即使我将其传递给其他地方的另一个变量。

有人可以解释我为什么以及如何存储&#34;服务器响应?

编辑:刚刚使用我的整个<script>

进行了编辑

3 个答案:

答案 0 :(得分:2)

由于您会立即看到结果,我会冒险猜测您的页面上有表单元素,当您点击返回时,它实际上是在提交表单。您可以简要地查看ajax操作的结果,然后您的表单提交,导致页面重新加载为新的空白页面。这是一个常见问题,并且始终存在这些相同症状。

您可以使用javascript删除表单元素或阻止表单的默认提交。

如果您向我们展示了更多实际的HTML,我们可以更具体地说明如何阻止表单提交。

答案 1 :(得分:1)

您可以通过调用表单标签中的函数来解决此问题,即

<form action="javascript:AnyFunction();">

你的代码在这里

答案 2 :(得分:0)

另一种方法是指定一个BUTTON来触发ajax,并在FORM外面设置按钮