0

Mongrel を実行しているサーバーでクエリを実行する Web サイトがあります。クエリ構文は非常に複雑になる可能性があり、このエラーを生成するクエリ (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 キロバイトまたは 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 に変更することは、プログラミングの観点からは些細なことです。

于 2012-10-21T20:44:23.253 に答える