0

我有一个应用程序,它有一个主页和一个带有复选框的表单;chk-bxs 表示要从 MySQL 数据库返回的列数据。

我试图实现的行为是:

  1. 用户选中/取消选中主页上的复选框
  2. 用户单击链接到将运行查询的页面
  3. 服务器通过 getJSON 调用接收复选框状态,由主页的卸载触发。PHP 加载 $_SESSION[] w/ chk-bxs 状态
  4. 然后服务器使用 $_SESSION[] 中的数据处理链接调用,以确定要返回哪些列数据并在结果中显示在表中

如果我在 getJSON 调用的最后一个成员分配处放置一个断点并单步执行,我可以实现这一点。如果没有这一步,getJSON 调用似乎不会发生;因此 chk-bxs 值不会传输到服务器。谁能解释这种行为?有没有更好的方法来解决这个问题?任何想法将不胜感激。

这是 index.php 文件的 head 部分中的代码,它调用将执行 getJSON 调用的函数:

$(window).on('beforeunload', function(){
indexFormUnload(); // this saves the state of the SELECT check-boxes
}); 

这是构造 getJSON 调用的代码 - 它位于 index.php 文件中包含的单独文件中:

function indexFormUnload(){
var ckBxValues = $(":input").serializeArray();
$.getJSON("ajaxJQ_server.php", // server page called by jquery
{ // Data sent via ajaxJQ
"callingForm": "index",
"callingElementID" : null,
"locStorage": ckBxValues,
"callingState": "unload",
"tableName": null
}
);
} 
4

1 回答 1

0

当浏览器关闭时,它会终止所有打开的连接。他们这样做是为了表现。你有一个比赛条件,你大部分时间都不会赢。无法确保对服务器进行了调用。曾经有一种方法可以通过 while 循环来实现,但浏览器将其杀死。

于 2012-11-20T16:44:36.797 回答