我有一个网站在运行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)
}
});
答案 0 :(得分: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应该从编程的角度来看是微不足道的。