gpt4 book ai didi

javascript - AJAX 请求成功 3 次,然后失败

转载 作者:行者123 更新时间:2023-11-30 12:49:42 38 4
gpt4 key购买 nike

我正在使用以下脚本将即时消息异步提交到我的数据库。

function sendMessage(content, thread_id, ghost_id)
{
var url = "ajax_submit_message.php";
var data = { content: content, thread_id: thread_id };
var type= "POST";

$.ajax({
url:url,
type:type,
data:data,
success:function(){ unGhost(ghost_id); refreshMessages(); },
error:function(){alert("FAIL");}
});
}

这在正常情况下完全符合预期,但是当我向我的 PHP 脚本添加一个“sleep(10)”以尝试找出它在服务器负载过重时如何运行时,我发现该脚本只能处理一个在它中止之前很少有请求。

脚本将完成三个成功的请求,但在第四个时每次都会失败。它不调用错误函数,而是调用成功函数。我不知道如何调试它,因为任何地方都不会抛出任何类型的错误或异常。谁能告诉我这可能是什么原因造成的?

编辑:由于请求,这里是我调用函数的方式:

function checkKey(e)
{
if (e.keyCode == 13)
{
//Get message and thread_id
var message_field = $(':focus');

//Validate and escape content
var content = message_field.val();
if (content == "") {return;}

//Grab thread_id
var id = message_field.attr('id');
var last_underscore = id.lastIndexOf("_");
var thread_id = id.substring(last_underscore+1);

//Clear input
message_field.val("");

//Add message to page
var ghost = insertGhost(thread_id,content,window.user_id);

//Send message on to server
sendMessage(content,thread_id,ghost);
}
}

最佳答案

如果您定期轮询(而不是在每次操作后手动排队轮询),您可能会遇到超时行为。可能第4个没有失败,实际上第4个成功了,第5个默默失败了。

原因如下:浏览器一次最多允许向给定主机发送 2 个并发请求。任何其他请求都将放入对您的应用程序透明的队列中。但是,这些 AJAX 请求会超时。所以前两个没问题。接下来的两个必须等待一会儿,但它们会在超时适用之前发送和接收。随后的那些被添加到浏览器的队列中,但由于它们甚至在发送之前就超时了,您看不到任何事件。

您可以通过确保在成功/失败时执行 setTimeout 或其他管理您在任何时候有多少待处理请求的方法来测试这一点

关于javascript - AJAX 请求成功 3 次,然后失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21373636/

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