Ruby 来自Mongrel的错误:“quot;HTTP元素请求“路径长于1024允许长度”;
我有一个网站,在运行Mongrel的服务器上运行查询。查询语法可能非常复杂,我刚刚运行了一个查询(HTTP请求),它产生了这个错误 欢迎所有解决方法 编辑:下面是完整的ajax命令:Ruby 来自Mongrel的错误:“quot;HTTP元素请求“路径长于1024允许长度”;,ruby,http,mongrel,Ruby,Http,Mongrel,我有一个网站,在运行Mongrel的服务器上运行查询。查询语法可能非常复杂,我刚刚运行了一个查询(HTTP请求),它产生了这个错误 欢迎所有解决方法 编辑:下面是完整的ajax命令: $.ajax({ type: "POST", url: '/parsequery/' + jsonQuery, beforeSend: function(x) { // this is needed because otherwise jquery doesn
$.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)
}
});
您应该使用HTTPPOST来实现这一点。许多服务器和浏览器实现对查询长度有严格限制,大约为1kbyte或2kbyte 所以不是
<form action="http://www.example.org/foo" method="get">
有关示例,请参见此处:
当然,服务器端需要处理POST请求。但是从编程的角度来看,在服务器端从GET到POST的更改应该是微不足道的。好的,您能给出POST请求如何触发的更多细节吗?如何提供参数?即使使用post,参数也可能通过“get part”传输,即通过URL传输,而不是通过正文传输。我刚刚将我正在使用的ajax命令添加到我的原始post中。谢谢你的帮助。上面查询的问题是:你明确地将它粘贴到URL中,所以URL部分变得很长。您应该做的是:将
/parsequery/foo/bar?param1=abc¶m2=def
转换为$.ajax(url:“/parsequery/foo/bar”,…,数据:{param1:“abc”,param2:“def”},…)
。通过这种方式,参数通过http正文传输,您实际上利用了POST请求的大发送负载。beforeSend
应该是不必要的。我认为您只需要将数据类型:“json”
更改为数据类型:“json”
<form action="http://www.example.org/foo" method="post">
$.post("/foo", {"param1": "foo", "param2": "bar"}, function(data) {
alert("post successful!");
});