下面的解决方案:编辑#2
我有一个用户可以排序的 HTML 列表。我不想在每次拖放操作后保存数据,所以我在卸载时保存数据:在 cookie 和数据库中。那行得通,但是:
保存数据后,列表被隐藏,我在此行中收到“语法错误”:
<!DOCTYPE html>
这很奇怪,因为在刷新同一页面 (F5) 后一切正常,没有进行任何更改。
我试图找到原因,但没有成功。这就是流程:
1. visit the page (index.php)
2. change the list (set: list_is_dirty = true)
3. click any internal link (call $(window).unload( ... save_data() ... )
4. target page appears without the list (syntax error!)
5. refreshing the page (everything works fine)
你知道如何找到这个错误吗?有什么工具或策略吗?或者也许与卸载功能有相同的体验?
提前致谢!
编辑:
一些代码:
var list_is_dirty = false;
// document ready?
$(function() {
function sort_list() {
// some code, not important
}
sort_list();
$(window).unload(function() {
if (list_is_dirty == true) {
/* ---------- HERE's the error! ---------- */
/* The error occures when I try to call the script.php
I tried load(), $.post(), $.get() but nothing works.
The string is correct. I'm not even able to call any of
these functions without params.
*/
// send data to script.php to save data
$("#div").load("script.php?str="+list_data_str);
$.cookie("list_data", list_data_str);
}
});
}
编辑 #2 / 解决方案: 我不知道为什么,但一切都适用于 window.onbeforeunload 而不是 jQuery.unload()。一个解释会很棒!我很抱歉这个令人困惑的线程!
window.onbeforeunload = function(e) {
$("#div").load("script.php");
}