Ajax.Request POST Körper nicht senden
-
03-07-2019 - |
Frage
Ich versuche, eine POST-Anfrage zu erstellen, leider ist der Körper des POST scheint nie gesendet zu werden.
Im Folgenden ist der Code, den ich verwende. Der Code wird aufgerufen, wenn ein Benutzer auf einen Link klickt, nicht eine Form Schaltfläche „Senden“. Es läuft ohne Fehler, ruft das Servlet, das genannt wird, aber, wie ich bereits erwähnt, ist der Körper des POST nie gesendet zu werden scheint.
Ich kann bestätigen, dass die Anforderung Körper nie, da ich Zugriff auf das Servlet habe gesendet genannt zu werden.
Ich habe versucht, „Parameter“ in ersetzen die Verwendung von „requestBody.“ Ich habe auch versucht, einen Parameter-String mit (x = a? Y = b). Ich habe auch bestätigt, dass „ckULK“ einen gültigen Wert enthält.
Irgendwelche Ideen?
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
Lösung
Dies sind die Art von Situationen, in denen Firebug und Firefox sind wirklich hilfreich. Ich schlage vor, Sie Firebug installieren, wenn Sie es nicht die Anforderung haben und prüfen, die gesendet wird.
Sie müssen auch auf jeden Fall halten, anstatt parameters
requestBody
.
Dieses:
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;
}
}
});
Sollte auf jeden Fall funktionieren.
Andere Tipps
übergeben Sie einfach die Daten als parameters
auf den Ajax-Request-Konstruktor:
new Ajax.Request(url, {
method: 'POST',
parameters: {
hello: "world", test: "test"
},
onSuccess: function(transport){
var data = transport.responseText.evalJSON();
}
});
Wenn ich dieses Problem betroffen war die Lösung contentType
von Ajax.Request
Optionen zu entfernen.
von = "https://stackoverflow.com/users/16417/paolo-bergantino „> Paolo Bergantino contentType
nicht in Ajax.Request
Optionen definiert sind.
Aus unbekannten Gründen params in parameters
definiert wurde nicht gesendet (FF hat sie nicht zeigen, und mein Server sah leer POST Körper).
Einer meiner Kollegen vorgeschlagen postBody
statt parameters
zu verwenden, aber ich habe es nicht versuchen.