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

标签 javascript jquery

我有一个简单的 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/

相关文章:

javascript - 网页上的语法高亮 Markdown

javascript - 热衷于直接使用 ViewState 或其他方法来更新回发数据来清除隐藏字段?

javascript - JQuery 类交换未按预期运行

javascript -///在 JavaScript 中是什么意思?

WebSocket 消息中的 JavaScript 双反斜杠

javascript - 如何使用 jQuery 倒计时插件创建计时器 "count up"?

javascript - 在JS中分解字符串

javascript - 如何将表搜索限制为列中包含特定文本的特定行

jquery - 在 IE7/8 中,jQuery 告诉我 cellpadding=0 单元格的填充为 1px

javascript - 使用图像删除表中的空白