gpt4 book ai didi

javascript - 发送ajax请求但没有得到正确的结果.Js

转载 作者:行者123 更新时间:2023-11-28 08:15:40 25 4
gpt4 key购买 nike

我试图在循环中和循环之间显示从数据库获取的数据,我调用该函数并发送ajax请求,但它不起作用。实际上,只有当我使用警报命令时,它才会显示。如果我使用警报,那么浏览器会显示该 div,然后发出警报,如果我单击“确定”,则会显示第二个 div,然后再次显示警报。这是js代码

function like(divid,id,session) {
var orgnldiv=document.getElementById(divid);
var ndiv=document.createElement('DIV');
var idd=id+5000;
ndiv.id =idd;
ndiv.className="likeclass";
orgnldiv.appendChild(ndiv);
var dynamicdiv=document.getElementById(idd);
var span=document.createElement('span');
var spanid=idd+5000;
span.id=spanid;
span.className="spanclass";
dynamicdiv.appendChild(span);

var xmllhttp15;

if (window.XMLHttpRequest) {
xmlhttp15=new XMLHttpRequest();

} else {
xmlhttp15=new ActiveXObject("Microsoft.XMLHTTP");
}

xmlhttp15.onreadystatechange = function() {

if (xmlhttp15.readyState==4 && xmlhttp15.status==200) {
document.getElementById(spanid).innerHTML=xmlhttp15.responseText;
}
}

xmlhttp15.open("GET","spancount.php?postid="+id+"&userid="+session);
xmlhttp15.send();
// alert(spanid);
}

请告诉我这个问题的原因是什么,只有当我使用警报时我的代码才能正常工作

最佳答案

当您使用警报时,您的代码之所以有效,是因为每当调用警报函数时。程序流程暂停。换句话说,在您消除警报之前,您的循环不会继续进行另一个 Ajax 调用。因此,请求得到正确处理,并且响应数据出现在 span div 中。这就是为什么我提到要让您的调用同步。

因此,回答您在评论中提出的问题,是的,有时太多的 Ajax 调用可能会成为问题。假设循环运行超过 15-20 次,这意味着有 15-20 个并发请求。现在,想想 php 脚本处理相同请求的次数?这里肯定有问题!

即使使用 Jquery Ajax,循环成功完成的几率实际上也是 50-50,因为这一切都归结为发出的请求量、使用的带宽以及服务器如何处理请求。

解决此问题的一种可能方法是:进行一次 Ajax 调用并以 json 形式获取整个数据,而不是不断地在循环中一次又一次地从服务器请求小块数据。然后,解析 json 并将数据附加到 span,使用特定的 span id 从 json 对象中提取相关数据。

您可能需要在上面的 javascript 和 spancount.php 中进行一些调整。但它肯定会为您节省大量带宽。您必须考虑这样一个事实:可能不止一个人在使用您的网站!!

希望事情能够解决,祝您的项目一切顺利:D

关于javascript - 发送ajax请求但没有得到正确的结果.Js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23627221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com