当前位置: 首页 > 面试题库 >

为什么我不能使用jQuery触发来自卸载事件处理程序的AJAX请求?

宋正真
2023-03-14
问题内容

我有以下代码,旨在在用户关闭聊天窗口时记录事件:

$(window).unload( function() {
   test();
});

function test()
{
   alert("Hi");
   $.ajax({
      type: "POST",
      url: baseUrl + 'Index/test',
      data: "user_id=" + "Nisanth" + "& chat_id=" + 2,
      success: function(msg){
         alert(msg);
      }
   });
   alert('Success');
}

“ Hi”和“
Success”消息都警报良好,但是AJAX回调中的警报没有…我打算通过AJAX请求触发的操作也没有发生(我正在开发聊天应用程序,并且打算当用户关闭窗口时在数据库中记录一个条目)。


问题答案:

由于ajax是异步的,因此在正确发送响应之前将卸载页面,从而有效地终止连接。尝试设置async:false;,尽管这会延迟卸载页面,直到接收到响应之后,如果您的服务器运行缓慢,这对于用户体验来说并不好。

$(window).unload( function () { 
    test(); 
}); 
function test() 
{ 
    alert("Hi"); 
    $.ajax({ 
    async: false,
    type: "POST", 
    url: baseUrl + 'Index/test', 
    data: "user_id=" + "Nisanth" + "& chat_id=" + 2, 
    success: function(msg){ 
            alert(msg); 
        } 
    }); 
    alert('Success'); 
}


 类似资料:
  • 问题内容: 假设我定义了一些全局Ajax事件处理程序(ajaxStart,ajaxStop和ajaxError)。通常,我对此表示满意,但对于一个请求,我想禁用ajaxError处理程序,但仍照常运行ajaxStart和ajaxStop处理程序。在jQuery的AJAX功能的文件中提到,可以设置为false,并传递到$就功能禁用所有全局AJAX事件处理程序的“全球性”的参数,但他们没有提及任何办法

  • 在我们的应用程序中,我们需要实现以下场景: 从客户端发送请求 服务器处理请求并生成文件 服务器返回文件作为响应 客户端浏览器显示文件下载弹出对话框,允许用户下载文件 我们的应用程序是基于ajax的应用程序,因此发送ajax请求(如使用jquery.ajax()函数)将非常简单方便。 但是在googilng之后,事实证明文件下载只有在使用非ajax POST请求时才是可能的(就像在这个流行的SO线程

  • 问题内容: 我尝试解除绑定click事件,但有时会触发两次,有时会触发5次!现在有点烦了! 来自的代码 更新 : 基本上我正在将以下代码 更多信息 : 这仅在我触发事件时发生,关闭模式对话框,然后使用其他对话框重新打开 数据结构: main.asp :负载> modal.asp :modal.asp包含上面的jquery +此页面上的两个div,其中包含panel1.asp和panel2.asp数

  • 问题内容: 对于jQuery,这是一个非常奇怪的问题。我正在加载一个div 页面加载。每条记录都是表格数据,并带有与之关联的“删除” ajax函数。当页面加载并单击“删除”链接时,ajax调用会触发。但是,一旦触发事件,就会从ajax调用返回数据,并且div中会填充数据(但页面不会刷新或重新加载)。当我再次单击链接时,ajax脚本将不会触发。这是我的代码: 问题答案: 当您删除元素然后通过java

  • 问题内容: 我正在尝试使用sigaction设置异常处理程序。对于第一个例外,它运作良好。但是在第一个异常之后不会调用sigaction处理程序,并且在第二个信号发生时程序会突然结束。 问题答案: 信号和异常互不相关。您正在使用的内容(从异步信号处理程序引发异常)只能在支持该功能的少数编译器之间移植,例如GCC和Intel C / C ++ with 。 就是说,您忘记做的是取消阻止信号:执行信号

  • 我在页面上有输入字段和提交按钮。 这里是jQuery代码: 我想防止模糊,如果从输入字段点击提交div,但想允许它,如果从输入字段点击页面的其他部分。我无法使用“提交”按钮。 我已竖起了小提琴。净/405kzboh/1 但是现在我甚至不明白为什么点击事件没有在模糊事件之前触发,如果有人从输入点击提交!