0

美好的一天,我在使用 ajax 查询时遇到问题,但是当响应长度为 4090+ 个字符时,jQuery ajax 函数就会失败并运行错误函数,这是我的代码:

function loadContent( e) {

currentActiveSlide = e;

    var parametros = {
            "action"    : 'slideContent',
            "rel"       : e.attr('rel'),
    };

    jQuery.ajax({
                data:  parametros,
                url:   template_url + '/ajax.php',
                type:  'post',

                success:  function (response, e) {
                   //What ever...
                },
                error: function(xhr, status, error) {
                    alert(error);
        }
    });
}

响应数据是什么并不重要,我尝试添加 'a' 字符 4k+ 次,它启动错误函数,错误变量为空。

有什么建议吗?- 提前致谢!

添加数据:

哪个数据无关紧要,例如,如果我将字符 'a' 作为响应发送超过 4k 次 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...' 那么该功能将不起作用,如果少于 4k 那么它将正常工作应该可以工作,但如果超过 4k 个字符则不会,所以我认为响应变量或类似的东西有限制。

4

2 回答 2

0

来自jQuery ajax 文档

成功

类型:Function(PlainObject data, String textStatus, jqXHR jqXHR) 请求成功时调用的函数。该函数获得三个参数: 从服务器返回的数据,根据 dataType 参数格式化;描述状态的字符串;和 jqXHR(在 jQuery 1.4.x 中,XMLHttpRequest)对象。从 jQuery 1.5 开始,success 设置可以接受一个函数数组。每个函数都会被依次调用。这是一个 Ajax 事件。

所以我认为jQuery(e).html(..)是错误e的,因为状态字符串不是选择器(您在成功函数的范围内,因此e您之前拥有的 var 无法访问 - 您定义了另一个同名的 var)。

你应该currentActiveSlide.html(..)改用。

于 2013-07-06T19:19:35.520 回答
0
function loadContent(e) {
    currentActiveSlide = e;
    var parametros = {
            "action"    : 'slideContent',
            "rel"       : e.attr('rel')
    };
    jQuery.ajax({
            data:  parametros,
            url:   template_url + '/ajax.php',
            type:  'post'
    }).done(function(data, textStatus, jqXHR) {
            alert(jqXHR.responseText);
    }).fail(function(jqXHR, textStatus, errorThrown) {
            alert(errorThrown);
    });
}

查看对脚本所做的更改。您的parametros变量声明中有一个多余的逗号。此外,您的successerror方法不会以您布置的格式响应。

但是,就您而言——这个问题非常像这个问题:ajax 响应数据的最大大小是多少?. 还有这个:查询字符串的最大可能长度是多少?

于 2013-07-06T19:35:49.683 回答