我正在尝试在卸载窗口时(即刷新页面时)向数据库发送一些请求.出于某种原因,仅在Safari上,客户端代码被执行,但对服务器的请求永远不会通过.当我在调试器中手动单步执行代码时,服务器确实获得了请求并处理它.
任何人都知道为什么会这样吗?
window.onbeforeunload = function() {
console.log("inside on before unload");
var requestParam = new a.ListRequest();
requestParam.setAction('set_delete');
var callback = function(isSuccess, response) {
if (isSuccess) {
//do something
} else {
// do something else
}
};
// Sends request to server
a.Fetch.list(requestParam, callback);
}
可能在Fetch调用中发生的请求是异步的,Safari不会等待它完成,然后再转到下一页/关闭选项卡.如果你可以使呼叫同步,它应该工作.请记住,在某些工具中通常不鼓励和弃用同步调用.
这个与Jquery相关的答案对同步调用有一个很好的解释:https://stackoverflow.com/a/11755262/1341437