以下是这种情况:我正在编写一个执行CRUD功能的简单AJAX应用程序。当用户双击特定元素时,该元素将更改为文本框,以便他们可以内联编辑。当文本框失去焦点(代码位于下面)时,文本框的值将被POST到更新数据库的PHP脚本。
除了一件事以外,一切都是时髦的。当我创建一个使用AJAX弹出到列表顶部的新记录时,我无法在不刷新页面的情况下编辑该记录。我的意思是,编辑看起来像是已经提交的,但是当你刷新时,它会恢复原状。刷新后,没有问题。
将其归结为:当我尝试在我的表中的新创建的行(在数据库和页面上)上运行以下代码时,编辑似乎是在页面上进行的,但从未进入数据库。
//Make changes on FOCUSOUT
$('#editable').live('focusout', function(){
var parentListItem = $(this).parents('li');
var theText = $(this).val();
var parentListItemID = parentListItem.parents('ul').attr('id');
$(this).remove();
parentListItem.html(theText);
parentListItem.removeClass('beingEdited');
$.post("databasefuncs.php?func=edit", { postedMessage: parentListItemID, fullTextContent: theText },
function(result){
if(result == 1) {
parentListItem.parents('ul').animate({ backgroundColor: 'blue' }, 500).animate({ backgroundColor: '#eeeeee' }, 500);
} else {
alert(result);
}
});
});
答案 0 :(得分:1)
我想你没有将事件绑定到通过AJAX加载的新DOM元素。
答案 1 :(得分:0)
你的问题是帖子执行但是你所定位的函数(func = edit)永远不会触发,你发送问号之后发送的params永远不会被你的php读取,你发送一个帖子请求并希望它表现得很好比如通过将参数附加到URL来获取,请将您的请求更改为:
$.ajax({
type: "POST",
url: "databasefuncs.php",
data: {func: "edit", postedMessage: parentListItemID, fullTextContent: theText},
success: function(data, textStatus, jqXHR) {
if(textStatus === "success") {
parentListItem.parents('ul').animate({ backgroundColor: 'blue' }, 500).animate({ backgroundColor: '#eeeeee' }, 500);
}
else {
alert(textStatus);
}
}
});
现在在你的PHP中你有$ _POST [“func”] =“编辑”;
希望这很清楚,这有帮助。欢呼声。