现在我有一个包含一些项目的表格,每个项目都有一个编辑图标。单击编辑图标时,项目的相应数据库 ID(其名称)通过 $.get() AJAX 方法发送到 process.php,它会生成一个包含该数据库项目的一些属性的 JQuery UI 对话框。
我单击的第一个项目会弹出正确的对话框,其中所有属性都填充在文本框中。但是,当我单击不同的项目时,会出现相同的对话框,其中包含第一个项目的信息。我单击的任何其他项在对话框中仍然具有第一项的信息。
我猜正在发生的是发送回 index.php、新 div 和 jquery 对话框调用的数据已经通过回显并附加到页面上——因此我得到了相同的第一个框和超过。我只是不知道如何解决它。
index.php 的一部分:
$('#edit_link').live('click', function(e){
var ID = $(this).attr('name');
console.log(ID);
$.get('process.php', {taskID: ID}, function(data){
$('body').append(data);
});
e.preventDefault();
})
...控制台成功记录了每个项目的 taskID,所以这不是问题。
进程.php:
if(isset($_GET['taskID'])){
$taskID = $_GET['taskID'];
$task = TaskDB::getTask($taskID);
$duration = $task->getDuration();
$description = $task->getDescription();
$deadline = $task->getDeadline();
echo '<script>$("#dialog").dialog({
height: 150,
width: 300,
modal: true,
buttons: {
"Save Task": function() {
$( this ).dialog( "close" );
},
Cancel: function() {
$( this ).dialog( "close" );
}
}
});</script><div id="dialog" title="Edit Task" style="display:none;">
<p>Deadline: <input type="text" style="margin-right:10px;" value="'.$deadline.'"/> Duration (hours): <input type="text" style="width:20px;" value="'.$duration.'"/></p>
<p>Description: <input type="text" style="width: 200px;" value="'.$description.'"/></p>
</div>';
}
回声部分是我认为问题所在,因为如果单击另一个编辑,则不会清除先前的回显数据。
任何帮助将不胜感激。此外,我不完全确定我所做的是否是实现这一目标的最佳方式(让 PHP 生成如此多的 html/javascript),因此任何有关此的建议也将不胜感激。谢谢!