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

时间:2012-05-02 07:55:46

标签: javascript jquery ajax google-chrome safari

我有一个问题,我显示了一系列对话或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在第二次调用时遇到问题。无论返回什么,他们都会在错误处理程序上失败,我不明白为什么。

1 个答案:

答案 0 :(得分:1)

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

任何情况下返回false修复它。甜!