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

Javascript 为什么AJAX返回的值几乎立即消失?,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,这是我的服务器端代码: 修改emp.php <?php echo $_POST[id]; ?> 这是我的html页面中的Javascript: <script> $(document).ready(function () { var alreadyClicked = false; $('.element').hover( //mouseenter function function(){ $('.eleme

这是我的服务器端代码:

修改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

$(文档).ready(函数(){
var alreadyClicked=false;
$('.element')。悬停(
//mouseenter函数
函数(){
$('.element')。单击(
函数(){
$(this.css(“颜色”、“蓝色”);
var objName=$(this.attr('name');
var objColumn=$(this.attr('id');
如果(!alreadyClicked){
alreadyClicked=真;
$(本)
.prepend(“”);
var elemento=$(“.newInput”);
变量位置=元素位置();
$(“.newInput”).css({
'位置':'绝对',
“顶部”:位置。顶部+15,
“不透明度”:0.9,
“z指数”:5000,
})
.focus();
//按回车键
$(文档)。按键(功能(e){
如果(e.which==13){
$.ajax({
url:“modify_imp.php”,
键入:“post”,
数据:{id:objName,column:objColumn},
成功:功能(数据、状态){
$(“#调试”).html(数据);
}
});
}
});
}//如果(!alreadyClicked)结束
});//结束mouseenter函数
},
//鼠标移动功能
函数(){
alreadyClicked=错误;
$(this.css(“颜色”、“红色”);
$(“.newInput”).remove();
}
);//结束。悬停
}))

debug
是html页面末尾的一个
,我想在这里显示来自服务器的响应。当我按下“回车”键时,实际上可以看到该div中0.1s的值,但随后它消失了

我已经尝试将返回值传递给局部或全局变量,但没有成功。 由于某种原因,
response
中的值在0.1s后丢失,即使我将其传递给其他变量

有人能告诉我为什么以及如何“存储”服务器响应吗


编辑:只是用我的整个

编辑了一下,因为你马上就能看到结果,所以我冒昧地猜测你的页面上有一个表单元素,当你点击return时,它实际上是在提交表单。您简要地看到ajax操作的结果,然后表单提交,从而使页面作为新的空白页面重新加载。这是一个常见的问题,总是有这些相同的症状

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


如果您向我们展示更多的实际HTML,我们可以更具体地帮助您防止表单提交。

另一种方法是指定一个按钮来触发ajax,并将按钮设置在表单外部

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

你的密码在这里


.

return
是一个保留字。请尝试
reservedData
是的,很抱歉在我的实际代码中没有“return”,我只是用英语翻译了我的代码,以便您能更好地理解。我认为这不是问题所在。我刚刚用“response”更改了它。您正在悬停处理程序中设置一个click处理程序。这意味着每次将鼠标移到元素上时,它都会不断添加更多的单击处理程序副本。因此,在您第十次鼠标悬停后,将有10个单击处理程序的副本;当您单击时,它将尝试运行所有这些内容10次,但大多数只运行一次,因为
alreadyClicked
将为
true
。这会不必要地消耗少量内存和处理器电源。单击处理程序应设置在悬停处理程序的外部;悬停处理程序可以为空。是的,该代码与表单相关!我需要表单元素,那么如何“阻止表单的默认提交”?@Notash-请向我们展示相关的HTML。您可以为表单创建一个
onsubmit
处理程序,并从中返回
false
。我刚刚用整个javascript编辑了我的主要帖子,表单是在单击element@Notash-您需要为表单对象创建onsubmit处理程序。您可以在HTML中指定它,也可以在插入后找到
对象并附加事件侦听器,或者可以更改创建
对象的方式,以便在创建对象时直接将侦听器附加到该对象。确定从“onsubmit=”solved my problem,非常感谢你!