php - ajax 问题 - 数据预置/附加中的一键延迟
Posted
技术标签:
【中文标题】php - ajax 问题 - 数据预置/附加中的一键延迟【英文标题】:php - ajax issue - One Click Delay in Data Prepending/Appending 【发布时间】:2014-03-13 00:51:57 【问题描述】:我正在尝试从用户那里获取数据并将其插入数据库,然后再次从同一数据库中获取所有新数据并添加到内容框。一切都很好,我只得到想要的数据。但是当我写帖子并单击提交按钮时,它会在数据库中插入数据,但不会添加新数据。但是当我再次写一篇新文章并单击提交时,它会在“最后一篇文章”之前添加意味着它正在使用 1 单击延迟。我尝试与console.log
核对,我在第一次点击和第二次点击时都得到了完美的数据。那么这段代码中限制它第一次添加数据的问题是什么? (我不知道问题的标题-_-所以如果有人可以纠正,请做)
$(document).ready(function()
$("#submit").click(function(e)
e.preventDefault();
var post = $("#s-content").val();
post = $.trim(post);
if (post=="")
$("#status-warning").show(100);setTimeout(function()$("#status-warning").hide(100),3000);
else
$.ajax(
type:"POST",
url:"process/post.php",
data:$("#post").serialize(),
cache:false,
success: function(data)
var request = $.ajax(
type:"GET",
url:"process/getNewPost.php?id=<?php echo $_SESSION['id']."&token=".session_id(); ?>",
/*success:function(data)
$("#all-posts").prepend(data);
console.log(data);
*/
);
request.done(function(check)
console.log(check);
$("#all-posts").prepend(check);
);
/*var a='';
a += '<div><li style="white-space:pre;">';
a += $("#s-content").val();
a += '</li></div>';
$("#all-posts").prepend(check);*/
$("#s-content").val("");
$("#remove").remove();
);
);
);
【问题讨论】:
【参考方案1】:我不确定这是否是您的问题的原因,但您的解决方案是不必要的复杂。
-
您不需要发出 2 个 ajax 请求。您已经拥有 javascript 中可用的变量,因此您可以使用这些变量来修改您的第一个 ajax 调用的
success
函数中的 #all-posts
部分。即使您没有所有可用的东西,您也应该让 process/post.php
返回它,而不是向服务器发出新请求。
您不需要将会话变量添加到您的 url。只需在 php 中启动会话,您就可以使用它们。虽然这可能不再重要,因为第二个 ajax 调用是不必要的。
【讨论】:
2.该会话变量和 id 仅用于“显示”。 (操纵xD):P:D和1。我想从另一个不同的php文件中获取数据。那么我怎样才能在单个 ajax 请求中完成所有进程呢?以及我使用另一个 php 文件的原因 - 当User A
发布他的帖子同时User B
也发布了一些内容时,我需要显示这两个帖子。所以我无法从process/post.php
获取数据,因为它只会显示单个帖子,我需要获取所有新数据,这就是我使用另一个 php 文件的原因。
@user3314428 只需在process/post.php
的末尾加上process/getNewPost.php
。如果您在上次更新的会话中存储时间戳,则您只能获取在该时间戳之后添加的记录,而不管是谁发布的。
嗯好主意.. 是的,我将时间戳存储在会话变量中。我会尽力让你知道。你确定这能解决我的主要问题吗?以上是关于php - ajax 问题 - 数据预置/附加中的一键延迟的主要内容,如果未能解决你的问题,请参考以下文章
使用 Jquery 在单击按钮时将 PHP 文件中的 HTML 加载/预置到 div 中
使用 AJAX 和 PHP 将 <options> 附加到 <select>
Ajax - 通过 ajax 将输入文件和附加变量发送到 php 文件