按顺序发送多个 Ajax 查询在 chrome 和 Safari 中失败

Sending multiple Ajax queries in sequence fails in chrome and Safari

本文关键字:chrome Safari 失败 查询 Ajax 顺序      更新时间:2023-09-26

我有一个问题,我显示了一系列相互馈送的对话或 AJAX 结果。例如。用户将单击以发送触发 ajax 调用的消息,对话框打开,用户填写表单并发送,对话框关闭,表单通过 AJAX 提交,然后另一个 AJAX 响应将打开对话或重定向用户。此过程会在所有浏览器中显示第一个对话框,但在 Safari 和 Chrome 中显示第二个对话框时会显示错误。我 95% 确定它可以在所有浏览器中找到。现在它似乎失败了。触发错误函数,然后浏览器将打开用于第二个 AJAX 请求的 URL。

正在使用jquery,PHP和javascript,我让它从eval(json(命令运行。从那以后,我重新构建了代码以返回原始的Javascript。

在任何情况下,错误都会在 AJAX 查询的"错误"处理程序上触发。返回的错误信息非常少。我知道Chrome有一个缓存过程,但不确定如何影响它,或者它是否存在于野生动物园中。无论如何,在运行返回的javascript之前,ajax的第二次调用似乎在safari和chrome中失败。我相信它以前可以在所有浏览器中工作,但现在我不太确定。我已经花了将近半天的时间,因此我将不胜感激。:D

用于运行 AJAX 调用的 Javascript 函数如下所示

function page(url){
     $.ajax({
            type: "POST",
            url: url,
            success : ajaxReturn,
            cache: false,
            dataType: 'script',
            error: function(result, status, err) {
                alert('HTTP ' + result.status + ' Error Encountered: ' + result.statusText);
                alert(result.responseText);
                alert('status: '+status+' error: '+err);
            return;
            }
        });
}
function ajaxReturn(ret){   
    eval(ret);
    $.unblockUI();
}

这与在两个 AJAX 调用中使用的代码相同。在某些情况下(如果在表单中发现错误,则为 IE(,返回代码几乎完全相同。我有一个用于所有对话,AJAX和相关过程的系统,到目前为止一直运行良好。

我从错误处理程序返回的消息是:

HTTP 0 Errpr Encountered: error

然后

<null>

然后

status:error error:

通过警报语句输出。哪里是空洞的对话。因此,由于运行相同的 ajax 函数并返回相同的代码,Chrome 和 Safari 在第二次调用时遇到问题。无论返回什么,它们在错误处理程序上都失败了,我不知道为什么。

好的,所以我发现了问题。对话中的表单内容是通过另一个 AJAX 调用提交的。因此,在 onsubmit 处理程序上,来自内容通过 jquery 序列化,然后发送到 AJAX。问题是我没有在 onsubmit 处理程序中的 AJAX 调用后包含返回 false。因此,由于某种原因,在 chrome 和 safari 上,这将返回错误状态 0,然后在通过 AJAX 调用的页面上转发我。

任何案例返回错误修复了它。甜!