Ajax请求($ .ajax(类型:'GET'))不传递大于45的数组,但是($ .ajax(类型:'POST'))确实如此。为什么?

时间:2013-04-19 09:56:46

标签: javascript jquery ajax arrays asp.net-mvc-3

我正在研究MVC 3项目,我有一个ajax请求($ .ajax),它将javascript数组传递给控制器​​并返回HTML结果(带有select元素和选项的局部视图)。

当数组为46项或更大时,不会调用控制器(我在控制器上有一个断点并且没有触发)。

然后我更改了ajax以请求$'ajax类型'POST'并且请求运行正常,其中包含来自数组的所有数据。

我已经用Google搜索了解为什么会出现这种情况但是空洞,除了堆叠溢出这个问题,这对我没什么帮助,因为它通常说明了get和post请求之间的区别 - 没有观察到服务器上的更改(这是我想要的)与服务器端的更改。我只是加载数据供用户选择。

也许这是我对ajax获取和发布请求的理解有点模糊,但如果有人遇到过这种问题并理解原因,我会非常感谢反馈。 :)

以下是我尝试执行的代码示例:

$(function () {
  $('#SelectedCategory').change(function () {

    //create array of selected attributes to limit returned results set
    var currentAttribs = new Array();
    $('#cboSelectedAttributes option').each(function () {
        currentAttribs.push(this.text);
    });

    //retrieve available attributes from server excluding current selections
    $.ajax({
        url: folder + '/Index_GetAttributes',
        type: "POST",
        data: { strCategory: $(this).find(':selected').val(), lstCurrentAttributes: currentAttribs },
        traditional: true,
        success: function (result) {
            $('#divAvailAAttribs').html(result);
        }
    });
  });
});

谢谢!

1 个答案:

答案 0 :(得分:0)

通常,GET比POST短。虽然请求数据的实际支持大小取决于特定服务器,但建议不要让GET请求URI长于255个字节。

我建议您使用一些Web调试工具查看您的GET请求的长度,然后您将了解更多信息。