繁体   English   中英

$ .post .done回调不触发,但数据被发布到服务器

[英]$.post .done callback not firing but data gets posted to server

我有一个简单的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函数。 因此,在这种情况下,模态不会隐藏。

任何想法可能有什么问题吗?

感谢您的阅读。

服务器没有响应200,而是在chrome dev工具中显示为“待处理”

似乎您的服务器可能没有终止会话,例如,服务器接收了您的请求,对其进行了处理,执行了必要的步骤(添加到数据库中),但是随后并没有告诉您JavaScript一切都已完成并且它已经分手后要往前看了。

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

在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属性,但即使这样也可能不起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM