это мой код на стороне сервера:Почему возвращаемая стоимость AJAX почти мгновенно исчезает?
modify_emp.php
<?php
echo $_POST[id];
?>
И это мой Javascript в моем HTML страницы:
<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
});
debug
является <div id="debug"> </div>
в конце моей HTML страницы, на которой я хочу показать мой ответ от сервера. Когда я нажимаю «ENTER», я могу увидеть значение для 0.1s внутри этого div, но затем оно исчезает.
Я уже пытался передать возвращаемое значение локальной или глобальной переменной, но это не сработало. По какой-то причине значение внутри response
теряется после 0,1 с, даже если я передаю его другой переменной в другом месте.
Может кто-нибудь объяснить мне, почему и как я могу «хранить» ответ сервера?
EDIT: Просто отредактирован мой весь <script>
'return' - зарезервированное слово. try 'reservedData' – 1252748
Да, извините, что это не« возврат »в моем действительном коде, я просто трансформировал на английском свой код, чтобы вы могли лучше понять. Я не думаю, что это проблема. Я просто изменил его с помощью «ответа». – Notash
Вы устанавливаете обработчик клика внутри обработчика зависания. Это означает, что при каждом перемещении мыши над элементом он добавляет больше копий обработчика кликов. Таким образом, после того, как вы наведете указатель мыши на 10-й раз, будет 10 копий обработчика кликов; когда вы нажмете, он попытается запустить все эти вещи 10 раз, за исключением того, что большинство из них будет выполняться только один раз, потому что 'ужеClicked' будет' true'. Это требует излишнего объема памяти и мощности процессора. Обработчик кликов должен быть установлен за пределами обработчика hover; обработчик зависания может быть пустым. –