AJAX.Request POST cuerpo no enviar
-
03-07-2019 - |
Pregunta
Estoy intentando crear una solicitud POST, desafortunadamente, parece que el cuerpo de la POST nunca se envía.
Debajo está el código que estoy usando. El código se invoca cuando un usuario hace clic en un enlace, no en un formulario " submit " botón. Se ejecuta sin errores, invoca el servlet que se está llamando pero, como mencioné anteriormente, el cuerpo de la POST nunca parece ser enviado.
Puedo validar que el cuerpo de la solicitud nunca se envía ya que tengo acceso al servlet al que se llama.
He intentado usar " parámetros " en reemplazo de " requestBody. " También he intentado usar una cadena de parámetros (x = a? Y = b). También he validado que " ckULK " contiene un valor válido.
¿Alguna idea?
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
Solución
Este es el tipo de situaciones en las que Firebug y Firefox son realmente útiles. Le sugiero que instale Firebug si no lo tiene y que compruebe la solicitud que se está enviando.
Definitivamente, también debes seguir los parámetros
en lugar de requestBody
.
Esto:
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;
}
}
});
Definitivamente debería funcionar.
Otros consejos
Simplemente pase los datos como parameters
al constructor de Solicitud de Ajax:
new Ajax.Request(url, {
method: 'POST',
parameters: {
hello: "world", test: "test"
},
onSuccess: function(transport){
var data = transport.responseText.evalJSON();
}
});
Cuando encontré este problema, la solución fue eliminar contentType
de las opciones de Ajax.Request
.
En conteste por Paolo Bergantino contentType
no se define en las opciones Ajax.Request
.
Por razones desconocidas, los parámetros definidos en parámetros
no se enviaron (FF no los mostró y mi servidor vio el cuerpo de POST vacío).
Uno de mis colegas sugirió usar postBody
en lugar de parámetros
pero no lo probé.