我很好奇如何让我的 AJAX/JQuery 用新的数据库信息更新页面。
对现有问题的研究表明,这些帖子可能会有所帮助:
根据这些建议,我创建了一个 PHP 函数来处理使用 AJAX 发送的数据。在Success上,我淡出旧的 HTML,并用新的 HTML 替换。
问题是第一次单击 DOM 元素时不会显示来自数据库的新数据,但在第二次单击时会显示。我在第二次点击时也得到了不需要的页面刷新。
您可以在以下位置看到一个现场示例(用于我的婚礼网站): http ://bucketlingerwedding.com/80s-music-reception/
如果您尝试投票,它第一次不起作用,第二次起作用(页面重新加载除外)。
我担心的另一个问题是我不知道是否应该将 cache: 设置为 'false' 或简单地省略。部分问题可能是我使用 replaceWith 加载的新 HTML(我也尝试过 .html())对于每个表行具有相同的类和 ID。我很好奇,如果我尝试替换单行而不是整个表,并给它一个新的 ID 和类名,JQUERY/AJAX 会用数据库中的新信息淡入该新行吗?
这是我用于 AJAX 的代码(部分基于上面的帖子):
$(document).ready(function(){
//JQuery for the submission of a new list item.
$('input.[class$="-arrow"]').click(function(e){
e.preventDefault(); //put e in function.
var ajaxurl = '<?php echo the_permalink(); ?>';
if ($(this).hasClass('up-arrow')) {
var arrowdirection = 'up';
var entry = $(this).val();
}
else if ($(this).hasClass('down-arrow')) {
var arrowdirection = 'down';
var entry = $(this).val();
}
var rowid = '.line-items-rows' + '#' + entry;
var data = {
action: 'cb_lud_arrow_action',
arrow: arrowdirection,
entryID: entry
};
$.ajax ({
cache: false,
type: 'POST',
url: ajaxurl,
data: data,
success: function(data){
newtable = '<?php
$cb_table_code = plugins_url("list-up-down/table-up-down.php", _FILE_);
include_once "table-up-down.php";
echo $cb_lud_new_output;
?>';
$('#cb_lud_table').fadeOut('fast', function(){
$(this).replaceWith(newtable).hide();
newtable.fadeIn('fast');
});
}
});
});
});
注意:我已经确认使用 AJAX 发布的数据确实更新了数据库表,因此 .php 文件和 ajax POST 方法至少可以正常工作。
我基本上需要的是事件的年表:
- 用户投票(点击)表格中的一行。
- 数据被发送到 MySQL 数据库,在正确的列中添加投票。
- 成功后,函数会从数据库中确定新值并生成新的 html。
- 旧数据淡出,新数据淡入。
- 大家都开心。
如果这更像是一个 JQuery 解决方案(比如将效果按正确的顺序排列,或者使用 .delay() 函数),或者更像是一个 AJAX 解决方案,我在其中设置回调函数,这对我来说并不重要数据的成功发布,或者与缓存有关的事情。只是想让它工作。请帮忙。