相关疑难解决方法(0)

jQuery AJAX在窗口卸载时触发错误回调 - 如何过滤掉卸载并仅捕获真正的错误?

如果我离开$ .ajax()请求中间的页面,则会触发错误回调.我已经在Safari和FF中测试了GET和POST请求.

一个可能的解决方案是在页面卸载时中止所有AJAX请求,但是在卸载之前调用错误处理程序,所以这似乎不可能.

我希望能够通过礼貌警报或模态对话框在客户端优雅地处理诸如500s之类的REAL错误,但我不希望在用户离开页面时调用此处理.

我该怎么做呢?

-

(也很奇怪:当离开页面时,错误处理程序说textStatus参数是"错误",与接收500 /错误请求时抛出相同.)

javascript ajax jquery xmlhttprequest

30
推荐指数
2
解决办法
7844
查看次数

jQuery post请求中断:只有一半的post参数到达

我在LAMP环境中发现了一个奇怪的现象.
在前端,我用jQuery执行一个AJAX post请求,如下所示:

$.post('save.php', {data1: d1, data2: d2, [...],  dataN: dN})
Run Code Online (Sandbox Code Playgroud)

的变量d1,以dN从网站(例如,从文字输入,文字区域,复选框等)与jQuery预先收集.

该文件save.php将post参数data1传递给dataN一个查询并将其保存在数据库中.

除非我在请求期间更改页面(例如,通过单击链接),否则请求大约需要500毫秒并且没有问题.

通常情况下,我希望请求被中止和忽略(这很好)但是(这是奇怪的行为)请求似乎已经完成,但只有部分数据被传输并因此被保存.

这意味着,例如,PHP脚本只保存data1data5并设置data6dataN空.
这个问题似乎已经被AJAX请求(不是PHP脚本),因为场引起$_POST['data6'],以$_POST['dataN']在PHP中没有设置在这种情况下.

所以我的问题:
为什么会发生这种情况(这是预期的行为)?
我怎么能避免呢?

更新
问题既不是jQuery也不是php.jQuery正确收集值并尝试将它们发布到php.我刚刚验证了它 - 它有效.另一方面,php脚本处理它按预期获得的所有内容 - 它只是没有收到整个请求.
所以问题必然是被中断的请求本身.与我预期它不会中止或失败不同,它仍会传输所有数据直到中断.
然后php获取此帖子数据并开始处理它 - 显然缺少一些信息.

更新2
我加入一个参数固定的问题eofdataN,并检查它是否是PHP设置.通过这种方式,我可以确保传输了整个请求.
然而,这并不能解决我仍然不理解的问题的根源.
有人帮忙吗?

php mysql ajax jquery post

25
推荐指数
3
解决办法
5233
查看次数

检测到jQuery.ajax调用失败,因为页面正在重新加载?

我做了很多$ .ajax调用,我以一种抛出消息的方式处理它们的错误.我发现如果在页面重新加载时正在进行ajax调用,例如单击刷新,或导航到另一个URL,那么我正在进行的ajax调用会触发它们的错误回调.

如何区分真实错误和因重新加载页面而中止的调用之间的区别?

$.ajax(...)
.success(...)
.error(function(jqXHR) {
  // jqXHR.status == 0 means either failed to contact server,
  // or aborted due to page reload -- how can I tell the difference?
});
Run Code Online (Sandbox Code Playgroud)

ajax jquery

11
推荐指数
1
解决办法
4420
查看次数

离开页面时出现JQuery Ajax错误

我使用以下代码将数据从服务器异步拉入客户端.错误块中的警报报告服务器上发生的错误.但是,如果用户在呼叫期间离开页面页面,则此块也会被触发并抛出一个空的警报容器.有没有办法处理用户更优雅地离开页面(即不要在他们离开前抛出空警报)?也许通过区分用户已导航的错误块,而不是在服务器上发生错误?

$.ajax({
    type: "GET",
    url: "/handlers/myHandler.ashx",
    async: true,
    dataType: "json",
    data: "var1=test_val&var2=test_val"
    success: function (invoices) {
       //Success block
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
        alert(errorThrown);
    }
});
Run Code Online (Sandbox Code Playgroud)

error-handling jquery asynchronous

5
推荐指数
1
解决办法
2208
查看次数