我有一个问题,我显示了一系列对话或AJAX结果,彼此相互馈送。例如。用户将单击以发送触发ajax调用的消息,打开对话框,用户填写表单并发送,关闭对话框,通过AJAX提交表单,然后另一个AJAX响应将打开对话框或重定向用户。此过程在所有浏览器中显示第一个对话框,但在Safari和Chrome中显示第二个对话框的错误。我敢肯定它在所有浏览器中都可以找到它。现在似乎失败了。将触发错误函数,然后浏览器将打开用于第二个AJAX请求的URL。
我正在使用jquery,PHP和javascript,我从eval(json)命令运行它。我已经重构了代码以返回原始Javascript。
在任何情况下,都会在AJAX查询的'error'处理程序上触发错误。返回的错误非常缺乏信息。我了解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调用使用的代码相同。在某些情况下(IE如果在表单中发现错误),返回代码几乎完全相同。我有一个适用于所有对话,AJAX和相关流程的系统,到目前为止一直运行良好。
我从错误处理程序返回的消息是:
HTTP 0 Errpr Encountered: error
然后
<null>
然后
status:error error:
通过警告声明输出。空谈话在哪里? 因此,由于运行相同的ajax函数并返回相同的代码,Chrome和Safari在第二次调用时遇到问题。无论返回什么,他们都会在错误处理程序上失败,我不明白为什么。
答案 0 :(得分:1)
好的,我发现了问题。对话框中的表单内容是通过另一个AJAX调用提交的。因此,来自内容的onsubmit处理程序通过jquery序列化,然后发送到AJAX。问题是我在onsubmit处理程序中的AJAX调用之后没有包含返回false。因此,出于某些原因,在chrome和safari上,这将返回错误状态0,然后在通过AJAX调用的页面上转发我。
任何情况下返回false修复它。甜!