[英]$.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.