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

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

然后,我将ajax更改为请求类型为'POST'的$ .ajax,并且请求运行正常,并且存在来自他数组的所有数据。

我一直在Google周围搜索,试图理解为什么可能是这样,但是除了来自堆栈溢出的问题外,它还是空着的,这对我没有多大帮助,因为它通常说到get和post请求之间的区别-并没有明显的变化。服务器(这是我想要的)vs服务器端的更改。我只是在加载数据供用户选择。

也许是我对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);
        }
    });
  });
});


谢谢!

最佳答案

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

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

10-04 13:08
查看更多