AJAX.Request POST本文が送信されません
-
03-07-2019 - |
質問
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
を使用することを提案しましたが、試しませんでした。