2012-10-21 3 views
0

У меня есть веб-сайт, на котором выполняются запросы на сервере, на котором работает Mongrel. Синтаксис запроса может быть задействован, и я просто выполнил запрос (HTTP-запрос), который дал эту ошибку.Ошибка от Mongrel: «HTTP-элемент REQUEST_PATH длиннее 1024 разрешенной длины»

Все обходные пути приветствуются.

EDIT: Вот полная команда Аякса:

$.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

'beforeSend' не требуется. Я думаю, вам просто нужно изменить 'datatype: 'json''' dataType:' json'' – Philip

ответ

2

Вы должны использовать HTTP POST для этого. Многие версии сервера и браузера имеют ограниченные пределы длины запроса, что-то около 1 кбайт или 2 кбайта.

Таким образом, вместо

<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 на стороне сервера должен быть с точки зрения программирования тривиальным.

+0

К сожалению, я уже использую пост, а не получаю. – davej

+0

Хорошо, можете ли вы дать более подробную информацию о том, как уволен пост? И как вы поставляете параметры? Даже с сообщением параметры могут передаваться через «получить часть», то есть через URL-адрес, а не через тело. – Philip

+0

Я только что добавил команду ajax, которую я использую в своем исходном сообщении. Спасибо за вашу помощь. – davej

Смежные вопросы