当通过 jQuery 发出同源 AJAX 删除时,通过同一客户端对服务器的后续调用将挂起。我将问题摘录如下。如果某些内容格式错误,请告知,因为这看起来像是一个奇怪的错误。
使用 Express 3.5.1、jQuery 1.11.0 和 Chrome 33.x。
复制:
- 使用下面的代码创建目录并安装 Express 依赖项
节点main.js
- 在 Chrome 33 中访问 localhost:5000
- 点击模拟删除链接
- 稍等片刻,刷新
在网络区域中,Chrome 将正常处理 DELETE 请求,但后续服务器调用将保持“待处理”状态。我尝试过 HTML 和 JSON 数据类型和响应。
main.js:
// Dependencies
var http = require('http'),
express = require('express');
// Basic app
var app = express();
// Logging (for debugging), and parsing dependencies
app.use(express.logger());
app.use(express.json());
app.use(express.urlencoded());
app.use(express.cookieParser());
app.use(express.methodOverride());
// Simple home page
app.get("/", function(req, res) {
var head = "<head><script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.0/jquery.min.js'></script></head>",
body = "<a id='link' style='text-decoration:underline;cursor:pointer;'>Click here to simulate delete</a>, wait a second, then try refreshing.",
params = {
url : "/item/5",
type : "DELETE"
}
ajax = "<script>$(function() { $('#link').click(function() { $.ajax(" + JSON.stringify(params) + "); }); });</script>"
res.send("<html>" + head + "<body>" + body + ajax + "</body></html>");
});
// Simulated deletion
app.del("/item/:id", function(req, res) {
res.send(204);
});
// Make the server listen
var server = http.createServer(app).listen(5000);
最佳答案
这最终成为一个与节点无关的第三方插件(我相信它是 Sophos,但我可能弄错了)。禁用插件后,一切正常。
您可以在此处查看更多信息:https://github.com/strongloop/express/issues/2069
关于javascript - Chrome 中快速挂 AJAX 删除后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23246884/