【问题标题】:HTTP Error 414. The request URL is too longHTTP 错误 414。请求 URL 太长
【发布时间】:2011-08-05 11:08:10
【问题描述】:

我正在使用 ckeditor 格式化我的 textarea 中的一些数据

<textarea id="editorAbout" rows="70" cols="80" name="editorAbout"></textarea>

现在,当我尝试像这样使用jQuery.ajax 发布这些数据时,

var about=escape( $("#editorAbout").text());
            $.ajax({
             type: "POST",
             url: "../Allcammand.aspx?cmd=EditAboutCompany&about="+about,
             type:"post",
                async: false ,
                   success: function(response){                                       

                    },
                    error:function(xhr, ajaxOptions, thrownError){alert(xhr.responseText); }
            });

我得到了错误

HTTP 错误 414。请求 URL 太长。

我在这里收到错误:http://iranfairco.com/example/errorLongUrl.aspx
尝试点击该页面左下方的编辑文本按钮。

为什么会这样?我该如何解决?

【问题讨论】:

  • 好吧,您将 的文本附加到 URL。 URL 不是为了处理这个问题而设计的。您应该在 POST 正文中发送文本,而不是尝试将其放在 URL 中。
  • 喜欢您发布的内容,但它确实是 GET。 :)

标签: javascript jquery html ajax


【解决方案1】:

根据this question,URL 的最大实际长度为 2000 个字符。这将无法容纳您尝试发送的大量 Wikipedia 文章。

不应将数据放在 URL 上,而应将其放在 POST 请求的正文中。您需要将data 值添加到您传递给ajax 函数调用的对象。像这样:

function editAbout(){

    var about=escape( $("#editorAbout").text());
    $.ajax({
        url: "Allcammand.aspx?cmd=EditAboutCompany&idCompany="+getParam("idCompany"),
        type:"post",
        async: false,
        data: {
            about: about
        },
        success: function(response){                                       
        },
        error:function(xhr, ajaxOptions, thrownError){alert(xhr.responseText); ShowMessage("??? ?? ?????? ??????? ????","fail");}
    });
}

【讨论】:

  • 我可以通过请求得到这个["about"]
  • 当 allcommand 返回超过 20000 个字符时... $.ajax({ url: "Allcammand.aspx?cmd=getAbout&idCompany="+getParam("idCompany"), async: false, success:功能(响应){警报(响应);}});
  • 您评论中的调用没有传递数据。
  • @GodIsLive - 你的评论是关于有进一步的问题还是这个答案解决了你的问题?
【解决方案2】:

对我来说,将 type:"get" 更改为 type:"post" 是可行的,因为 get 会显示所有查询,从而使其 URL 更大。
只需将 typeget 更改为 post
这应该会有所帮助。 :)

【讨论】:

  • 这是可以接受的答案!!!! +1
【解决方案3】:

在我的例子中,在 post call 之前有一个运行时错误。修复它解决了问题。

运行时错误试图读取$('#example').val(),其中$('#example') 元素不存在(即undefined)。

我相信这肯定会对某人有所帮助。

【讨论】:

    【解决方案4】:

    在我的情况下,即使我使用“POST”并且对服务器的调用成功,也会引发错误。原来是我缺少 dataType 属性...奇怪但现在它可以工作了

                return $.ajax({
                url: url,
                type: 'POST',
                dataType: 'json',
                data: JSON.stringify(data)
            })
    

    【讨论】:

      【解决方案5】:

      聚会有点晚了,但我在使用 POST 时收到了这个 414。原来是 Windows 中的最大路径长度导致了这个错误。我正在上传一个文件,实际请求长度很好(使用 post)。但是在尝试保存文件时,它超出了 Windows 中默认的 260 字符限制。这导致了 414,这看起来很奇怪。我只期望 501。我认为 414 是关于请求,而不是服务器处理。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多