我有一个简单的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函数。所以在这种情况下,模态不会隐藏。
任何想法可能出错?
感谢您的阅读。
答案 0 :(得分:1)
服务器不响应200,而是在chrome dev工具中显示&#34; pending&#34;
似乎您的服务器可能没有终止会话,因为服务器接收您的请求,处理它,执行必要的步骤(添加到数据库),但是然后没有告诉您的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
属性,但即使这样也行不通。