gpt4 book ai didi

javascript - $.post .done 回调未触发,但数据已发布到服务器

转载 作者:行者123 更新时间:2023-12-03 10:46:01 24 4
gpt4 key购买 nike

我有一个简单的 JavaScript,可以将一些数据发布到服务器。

$.post(url,dataJSON, function() {
}).done(function(json) {
$("#summary-modal").modal('hide');
}).fail(function(xhr, status, error) {
var err = "<div>"+xhr.responseText+"</div>";
$('#submit_err').append(err);
$('#submit_err').show();
});

现在,由于某些奇怪的原因,一旦 POST 发送到服务器并被接受,它就不会进入 .done 函数。所以在这种情况下,模式不会隐藏。

有什么想法可能是错误的吗?

感谢您的阅读。

最佳答案

the server does not respond with a 200, but instead in chrome dev tools it shows "pending"

看起来您的服务器可能不会终止 session ,因为服务器接收您的请求,处理它,执行必要的步骤(添加到数据库),但随后不会告诉您的 JavaScript 一切都已完成是时候继续前进了。

如果您自己正在编写服务器,则只需结束 session 即可轻松解决此问题,但具体细节取决于您的服务器所使用的语言。

在node.js中,你想要这样的东西:

response.writeHead(200, {'Content-Type': 'application/json'}); // "success" status
response.end(); // ends session

在 PHP 中

session_write_close (); // writes all data and closes

但是只需研究一下您自己的语言的执行此操作的方法即可。

除非您实际上对服务器有一些影响,否则您实际上无法对这个问题采取任何措施 - 也许您可以找到一种奇特的方法,不断检查 xmlhttprequest 的 responseText 属性对象,但即使这样也可能行不通。

关于javascript - $.post .done 回调未触发,但数据已发布到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28570119/

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