質問

POSTリクエストを作成しようとしていますが、残念ながらPOSTの本文は送信されないようです。

以下は、使用しているコードです。ユーザーがフォームの「送信」ではなくリンクをクリックすると、コードが呼び出されます。ボタン。エラーなしで実行され、呼び出されているサーブレットを呼び出しますが、前述したように、POSTの本文は送信されないようです。

呼び出されるサーブレットにアクセスできるため、リクエスト本文が送信されないことを検証できます。

" parameters"を使用してみました「requestBody」の代わりに。また、パラメーター文字列(x = a?y = b)を使用してみました。また、「ckULK」を検証しました。有効な値が含まれています。

アイデアはありますか

new Ajax.Request(sURL,
{
    method: 'POST'
    , contentType: "text/x-json"
    , requestBody: {ulk:ckULK}
    , onFailure:
        function(transport)
        {
            vJSONResp = transport.responseText;
            var JSON = eval( "(" + vJSONResp + ")" );
            updateStatus(JSON.code + ": " + JSON.message);
        } // End onFailure
    , onSuccess: 
        function(transport) 
        {
            if (200 == transport.status)
            {
                vJSONResp = transport.responseText;
            }
            else
            {
                log.value += "\n" + transport.status;
            }
         } // End onSuccess
}); // End Ajax.request
役に立ちましたか?

解決

これらは、FirebugとFirefoxが本当に役立つ状況です。 Firebugがない場合はインストールして、送信されているリクエストを確認することをお勧めします。

また、 requestBody ではなく parameters に固執する必要があります。

これ:

new Ajax.Request(sURL,
{
    method: 'POST',
    parameters: 'hello=world&test=yes',
    onFailure: function(transport) {
        vJSONResp = transport.responseText;
        var JSON = eval( "(" + vJSONResp + ")" );
        updateStatus(JSON.code + ": " + JSON.message);
    },
    onSuccess: function(transport) {
        if (200 == transport.status) {
            vJSONResp = transport.responseText;
        } else {
            log.value += "\n" + transport.status;
        }
     }
});

間違いなく動作するはずです。

他のヒント

データを parameters としてAjax Requestコンストラクターに渡すだけです:

new Ajax.Request(url, {
  method: 'POST', 
  parameters: {
    hello: "world", test: "test"
  },
  onSuccess: function(transport){
    var data = transport.responseText.evalJSON();
  }
});

この問題が発生したときの解決策は、 Ajax.Request オプションから contentType を削除することでした。

answer Paolo Bergantino contentType Ajax.Request オプションで定義されていません。

不明な理由から、 parameters で定義されたパラメーターが送信されませんでした(FFはそれらを表示せず、サーバーには空のPOST本体が表示されました)。

同僚の1人が、 parameters ではなく postBody を使用することを提案しましたが、試しませんでした。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top