0

我有一个在运行 Mongrel 的服务器上运行查询的网站。查询语法可能非常复杂,我刚刚运行了一个查询(HTTP 请求),它产生了这个错误。

欢迎所有解决方法。

编辑:这是完整的 ajax 命令:

 $.ajax({
        type: "POST",
        url:    '/parsequery/' + jsonQuery,
        beforeSend: function(x) { // this is needed because otherwise jquery doesn't see the returned data as json
            if(x && x.overrideMimeType) {
                x.overrideMimeType("text/html");
            }
        },
        datatype: 'json',
        success: function(data, textStatus) {
            if (parsedOK(data)) {
                executeQuery(jsonQuery);
            }
            else {
                handleFailedParse(data);
            }

        },
        error:  function(jaXHR, textStatus, errorThrown) {
            alert("error sending request: " + textStatus)
        }

    });
4

1 回答 1

2

您应该为此使用 HTTP POST。许多服务器和浏览器实现对查询长度有严格的限制,大约在 1 kByte 或 2 kBytes 左右。

所以而不是

<form action="http://www.example.org/foo" method="get">

你应该做

<form action="http://www.example.org/foo" method="post">

如果您不通过表单进行请求,您可以使用 jQuery,例如:

$.post("/foo", {"param1": "foo", "param2": "bar"}, function(data) {
  alert("post successful!");
});

有关示例,请参见此处:http: //api.jquery.com/jQuery.post/

当然服务器端需要处理 POST 请求。但是从编程的角度来看,在服务器端从 GET 更改为 POST 应该是微不足道的。

于 2012-10-21T20:44:23.253 回答