我需要一个php文件来处理,当用户点击链接/返回/退出页面。它是保存用户信息过程的一部分。如果我做一个jQuery的卸载,我将如何激发PHP文件加载和处理。 (window).bind(“unload”,function(){ //我应该添加什么内容? });}};}};}};在UnLoad上处理一个页面?
回答
$(document).ready(function() {
$(':input',document.myForm).bind("change", function() {
setConfirmUnload(true);
}); // Prevent accidental navigation away
});
function setConfirmUnload(on) {
// To avoid IE7 and prior jQuery version issues
// we are directly using window.onbeforeunload event
window.onbeforeunload = (on) ? unloadMessage : null;
}
function unloadMessage() {
if(Confirm('You have entered new data on this page. If you navigate away from this page without first saving your data, the changes will be lost.')) {
$.ajax({
type: "POST",
url: "some.php",
data: "name=John&location=Boston",
success: function(msg){
alert("Data Saved: " + msg);
}
});
}
}
确保您已经升级了jQuery版本。 jQuery的版本1.3.2有一个bug:
Ticket #4418: beforeunload doenst work correctly
或使用本机功能:
window.onbeforeunload = function() {....}
您应该使用beforeunload
事件。你可以在那里触发一个同步的 ajax请求。
$(window).bind('beforeunload', function() {
$.ajax({
url: 'foo',
async: false,
// ...
});
});
请注意,某些旧浏览器不支持onbeforeunload
。即使这种技术有效,我也不确定你能够(应该)阻止这个事件多久。如果该请求会阻塞几秒钟,那将是一个非常糟糕的用户体验。
一个很好的权衡可能会告诉用户某些东西已经改变了什么还没有保存。用一些布尔检查做这件事,最后在onbeforeunload
请求中返回一个string value
。然后,浏览器将优雅地询问用户他是否真的想离开您的网站,并显示您提供的字符串。
所以我可以做一些像网址:'/files/save.php'..我需要任何其他编码? – acctman 2010-11-15 20:34:31
@acctman:是的,但你应该添加'数据'属性ti实际传输一些日期的权利。无论如何,在考虑后,这可能不是一个好方法。我用更方便的方式扩大我的答案,优雅地问。 – jAndy 2010-11-15 20:39:27
好吧,我想你失去了我。像我这样的javascript newb最容易实现的方法是什么?一个可靠的,我的PHP文件已准备就绪,只需要处理它,只需要一个快速调用它的方法。谢谢。 – acctman 2010-11-15 20:56:31
我猜一个同步AJAX调用可能工作。
$.ajax({
async: true,
url: '/foo/',
success: function(data) {
// Finished.
}
});
当然,请记住,这不会有任何担保会发生。我的浏览器可能崩溃。我的电脑甚至可能会关机。当然,我可能会禁用JavaScript。所以你一定需要一个服务器端的方式来处理这种情况,以防万一方便的JavaScript技术实际上不起作用。
- 1. php在一个页面上处理多个表单处理
- 2. 在asp.net页面上处理()
- 3. 用jquery在一个页面中处理多个页面请求
- 4. 如何在一个页面上处理多个表单?
- 5. 如何在一个页面上处理多个表单?
- 6. .load和.unload外部页面在div内
- 7. 在单个页面子文件中处理页面向上
- 8. Joomla在同一页面上处理多个Ajax表格
- 9. 在浏览器上处理页面源
- 10. 在向导页面上处理取消
- 11. 在同一页面处理PHP请求
- 12. 处理上的一个页面多种形式
- 13. 同一页面上处理多个表格
- 14. 在Django的单个页面上处理多个表单
- 15. 在Drupal中处理几个PHP页面
- 16. 在asp.net中处理页面
- 17. 如何在切换它们时在每个页面页面上处理一个会话
- 18. 多个表单在一个页面上,如何处理后退按钮行为?
- 19. 在单个页面上处理两个Ajax调用以将数据拉到另一页上的Highcharts上
- 20. 检查页面上的某个Ajax是否正在处理中?
- 21. 如何处理在多个页面上使用的表单?
- 22. 页面设计上的错误处理
- 23. 如何处理页面上的按钮?
- 24. 执行处理程序从一个页面到另一个
- 25. 一个PHP页面上从处理页面发送变量回到原来的PHP页面
- 26. 有条件处理vs单独页面 - 哪一个有道理?
- 27. 在一个窗体上处理多个面板
- 28. 在一个页面中处理两种不同的表单
- 29. Sitecore mvc在同一页面处理多个表单
- 30. 如何处理多种形式在一个页面
的JavaScript在浏览器中运行,PHP运行在服务器上(除非你正在运行的node.js或东西但我不认为在这种情况下),所以JavaScript需要谈论的东西,认为阿贾克斯,在后端触发的东西。 – PurplePilot 2010-11-15 20:28:37