如何防止代码在 JQuery 插件完成保存 cookie 之前执行

How to prevent code from executing before a JQuery plugin is finished saving a cookie

本文关键字:cookie 保存 执行 代码 何防止 JQuery 插件      更新时间:2023-09-26

我有以下名为 HowTo 的函数,它与 onclick 事件一起执行,其中的一个函数需要 JQuery 插件 jquery.cookie,即:">一个简单、轻量级的 jQuery 插件,用于读取、写入和删除 cookie。

function HowTo(){
   $largeAmountOfHTML = document.getElementById("element").innerHTML;
   $.cookie("nameOfCookie", $largeAmountOfHTML);
   $.ajax({
       type: "GET",
       url: "path/to/serverside/script.php",
       async:false,
   });

   window.location.href='anotherPage.php';
};

该函数首先检索大量 HTML 并将其分配给变量 $largeAmountOfHTML。然后使用在jquery.cookie库中声明的JQuery函数$.cookie((,该函数将$largeAmountOfHTML的值保存到cookie名称OfCookie。然后该函数进行AJAX调用,该调用执行服务器端php脚本,该脚本检索cookie数据并将内容保存到MYSQL数据库。完成后,该函数将当前窗口定向到另一个页面.php。

该函数运行平稳,未声明控制台错误。但是,当$largeAmountOfHTML达到一定大小时,jquery.cookie 无法在服务器端脚本尝试检索之前足够快地分配 cookie。jquery.cookie没有列出我可以用来防止这种情况发生的任何方法。

一旦$largeAmountOfHTML足够大并且无法及时保存到 cookie 中,severside 脚本就会声明此错误:

<br />
<b>Notice</b>:  Undefined index: nameOfCookie in <b>localhost/path/to/serverside/script.php</b> on line <b>4</b><br />

解决这个问题的最佳方法是什么?

不会延迟完成工作吗?然后只需调用 delay 回调中的服务器端代码即可。