Javascript 为什么AJAX返回的值几乎立即消失?
这是我的服务器端代码: 修改emp.phpJavascript 为什么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
<?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,非常感谢你!