JQuery - $.ajax POST nicht senden .Daten auf web-server
Bin ich über das JQuery -$.ajax-post-Befehl aufrufen, wird ein ajax-event auf meinem web-server:
var formParams = "fe1=y&fe2=m&fe3=m";
$.ajax({
type: 'POST',
url: '/foo.jsp',
async: false,
data: formParams,
complete: function(xmlRequestObject, successString){
ymmReceiveAjaxResponse(xmlRequestObject, successString);
}
});
Die ajax-Komponente erfolgreich ruft die web-Seite, aber es enthält keine der post-Daten.
ie - "(HttpServletRequest) request.getParameterMap.size() == 0"
- ich würde erwarten, dass 3, aber bin immer null.
Ändern Sie den obigen Befehl aus POST ein GET macht alles gut funktionieren.
TIA
- Diese Frage wurde in anderen threads beantwortet, denn ich habe gerade stolperte über die Ursache des Problems - mit Hilfe von FireBug und Eröffnung die Eröffnung der Net-sniffer-do-hicky, ich bin zu sehen, dass der web-server antwortet mit status 302 auf den Aufruf der web-Seite. Ich erläutere meine Lösung für das problem ein bisschen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Ursache des Problems wurde gefunden mit FireBug und Eröffnung die Eröffnung des Netto-gadget.
Bin ich zu sehen, dass der web-server antwortet mit status 302 auf den Aufruf der web-Seite.
Erweiterung der 302 Anfrage in Firebug/Net, und die Prüfung der Parameter, Header -, Response-und HTML schnell identifiziert, es war eine Applikations-spezifische Problem, mit Ursprung auf dem server.
Vielen Dank für jedermanns feedback
Versuchen Sie dies :
Sollte es funktionieren.
Ihren code wie zitiert ist in Ordnung (ich habe es ausprobiert lokal).
Meine Vermutung ist, dass die
formParams
string in Ihre Frage ist nur ein Beispiel, und in Wirklichkeit machen Sie etwas generieren, dass die string-on-the-fly, und das problem liegt in , dass code statt.Zum Beispiel, sind Sie sicher, dass Sie Escape Zeichen werden korrekt (mit
alsterrunde
)? Oder noch besser, lassen Sie jQuery beschäftigen, wie diesen:Wenn Sie ein Objekt, jQuery, um die URI-Codierung für Sie. Wenn Sie wirklich wollen es selbst zu tun:
Dort habe ich noch nicht codiert, den Feld-Namen, da diese Namen haben keine Sonderzeichen in Ihnen; Sie müssen, wenn Sie Ihre form die Namen sind interessanter als das.
var formParams = $("#myForm").serialize();
, und das scheint nicht, etwas zu tun für mich.serialize
übernimmt die Codierung für Sie, das ist es also nicht. Grundsätzlich sollte der code funktioniert, und funktioniert am Ende, so müssen Sie Schritt für Schritt durch mit einem debugger und sehen, was jQuery ist eigentlich senden. Könnte es sein, dass jQuery tut seinen job, aber aus welchem Grund auch immer die config das routing der Anfrage zu Ihrem JSP-versaut ist.Nachdem frustrierend zu versuchen, vier Stunden lang, fand ich heraus, dass es in der Lage ist, dies zu erreichen, durch die Einstellung der
contentType
im ajaxPOST
Sie wie folgt vor,Verwenden
success
:success
odercomplete
hat keinen Einfluss auf die Daten nicht an den server gesendet in den ersten Platz. (Und er kanncomplete
wenn er will, funktioniert es Prima. 🙂 )