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
War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top