2

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

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

然后,我将 ajax 更改为请求类型为“POST”的 $.ajax,请求运行良好,其中包含来自他数组的所有数据。

我用谷歌搜索试图理解为什么会这样,但结果却是空的,除了堆栈溢出的这个问题,这对我没有多大帮助,因为它通常说明了 get 和 post 请求之间的区别 - 没有可观察到的变化服务器(这是我想要的)与服务器端的更改。我只是加载数据供用户选择。

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

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

$(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);
        }
    });
  });
});

谢谢!

4

1 回答 1

0

一般来说,GET 比 POST 短。虽然实际支持的请求数据大小取决于具体的服务器,但不建议 GET 请求 URI 长于 255 字节。

我建议使用一些网络调试工具检查您的 GET 请求的长度,然后您会知道更多。

于 2013-04-19T10:03:24.693 回答