我有一个问题是我显示了一系列对话或相互提供的 AJAX 结果。例如。用户点击发送消息,触发 ajax 调用,对话框打开,用户填写表单并发送,对话框关闭,表单通过 AJAX 提交,然后另一个 AJAX 响应将打开对话框或重定向用户. 此过程在所有浏览器中显示第一个对话,但在 Safari 和 Chrome 中显示第二个对话错误。我 95% 确定它在所有浏览器中都能正常工作。现在似乎失败了。触发错误函数,然后浏览器将打开用于第二个 AJAX 请求的 URL。
我正在使用 jquery、PHP 和 javascript,并通过 eval(json) 命令运行它。从那以后,我重构了代码以返回原始 Javascript。
在任何情况下,错误都会在 AJAX 查询的“错误”处理程序上触发。返回的错误信息非常少。我知道 Chrome 有一个缓存过程,但不确定如何影响它或者它是否存在于 safari 中。无论如何,在运行返回的 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 调用使用的代码相同。在某些情况下(即,如果在表单中发现错误),返回代码实际上是完全相同的。我有一个用于所有对话、AJAX 和相关进程的系统,到目前为止它一直运行良好。
我从错误处理程序返回的消息是:
HTTP 0 Errpr Encountered: error
然后
<null>
然后
status:error error:
通过警报语句输出。哪里是空对话。因此,由于运行相同的 ajax 函数并返回相同的代码,Chrome 和 Safari 在第二次调用时遇到了问题。无论返回什么,它们都在错误处理程序上失败,我不知道为什么。