corpo Ajax.Request POST não enviar
-
03-07-2019 - |
Pergunta
Eu estou tentando criar uma solicitação POST, infelizmente, o corpo do POST parece nunca ser enviada.
Abaixo está o código que estou usando. O código é chamado quando um usuário clica em um link, não é uma forma botão "enviar". Ele é executado sem erro, invoca o servlet que está sendo chamado, mas, como já referi anteriormente, o corpo do POST parece nunca ser enviada.
Eu posso confirmar que o corpo da solicitação nunca é enviado desde que eu tenho acesso ao servlet sendo chamado.
Eu tentei usar "parâmetros" em substituição de "requestBody." Eu também tentei usando uma seqüência de parâmetro (x = a? Y = b). Eu também validado que "ckULK" contém um valor válido.
Todas as idéias?
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
Solução
Estes são o tipo de situações em que Firebug e Firefox são realmente úteis. Eu sugiro que você instale Firebug se você não tê-lo e verificar o pedido que está sendo enviada.
Você também precisa definitivamente de furar a parameters
vez de requestBody
.
Este:
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;
}
}
});
deve definitivamente trabalho.
Outras dicas
Basta passar os dados como parameters
para o Pedido de construtor Ajax:
new Ajax.Request(url, {
method: 'POST',
parameters: {
hello: "world", test: "test"
},
onSuccess: function(transport){
var data = transport.responseText.evalJSON();
}
});
Quando eu bati este problema a solução era remover contentType
de opções Ajax.Request
.
Na resposta href="https://stackoverflow.com/a/216074/1483"> por Paolo Bergantino contentType
não está definido no opções Ajax.Request
.
A partir razões desconhecidas params definidos no parameters
não foi enviada (FF não mostrá-los e minha serra servidor corpo POST vazio).
Um dos meus colegas de trabalho sugerido para uso postBody
vez de parameters
mas eu não tentar.