JQuery $.ajax POST n'a pas l'envoyer .données vers le serveur web
Je suis à l'aide de JQuery $.ajax poste de commande pour appeler un ajax cas sur mon serveur web:
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);
}
});
L'ajax composant avec succès des appels à la page web, mais il n'inclut pas les données post.
ie - "(HttpServletRequest) request.getParameterMap.size() == 0"
- je m'attends à 3, mais je suis arriver à zéro.
La modification de la commande ci-dessus de la POSTE, pour un fait tout fonctionne bien.
TIA
Cette question a été abordée dans d'autres threads, comme je viens de tombé sur la cause du problème à l'aide de FireBug, et l'ouverture de l'ouverture le Net sniffer n'-hicky, je vois que le serveur web est de répondre avec un statut 302 sur l'appel de la page web. Je vais vous expliquer ma solution au problème de la un peu.
OriginalL'auteur Eyeless Whim | 2011-04-08
Vous devez vous connecter pour publier un commentaire.
La cause du problème a été trouvée à l'aide de FireBug et l'ouverture de l'ouverture de la Net gadget.
Je vois que le serveur web est de répondre avec un statut 302 sur l'appel de la page web.
De développer le 302 demande dans Firebug/Net, et en examinant les Params, les en-Têtes de Réponse, HTML et rapidement identifié que c'était une demande spécifique de la question d'origine sur le serveur.
Merci pour tous les commentaires
OriginalL'auteur Eyeless Whim
Essayez ceci :
Il devrait fonctionner.
OriginalL'auteur Timon. Z
Votre code cité est très bien (je l'ai essayé en local).
Ma conjecture est que le
formParams
chaîne dans votre question, c'est juste un exemple, et en réalité vous êtes en train de faire quelque chose pour générer la chaîne à la volée, et le problème réside dans que code à la place.Par exemple, êtes-vous sûr que vous êtes en échappant les caractères correctement (en utilisant
encodeURIComponent
)? Ou mieux encore, laissez jQuery traiter avec elle, comme ceci:Si vous passez un objet, jQuery va gérer l'URI-de codage pour vous. Si vous vraiment voulez le faire vous-même:
Là, je n'ai pas codé le domaine des noms, parce que ces noms n'ont pas de caractères spéciaux, vous devez si votre formulaire noms sont plus intéressant que ça.
var formParams = $("#myForm").serialize();
, et qui ne semble pas faire quelque chose pour moi.Hmmm,
serialize
va gérer l'encodage pour vous, alors c'est pas ça. Fondamentalement, le code devrait fonctionner, et ne travailler à cette fin, de sorte que vous aurez à l'étape par le biais de l'aide d'un débogueur et voir ce que jQuery est en fait l'envoi. Il se pourrait que jQuery fait son travail, mais pour quelque raison que ce soit la configuration de routage à la demande à votre JSP est foiré.OriginalL'auteur T.J. Crowder
Après avoir désespérément essayé pendant quatre heures, j'ai trouvé qu'il est capable de réaliser cet objectif par la mise en au
contentType
en ajaxPOST
comme suit,OriginalL'auteur kmario23
Utilisation
success
:success
oucomplete
n'a aucune incidence sur les données ne sont pas envoyées au serveur en premier lieu. (Et il peut utilisercomplete
si il veut, il fonctionne très bien. 🙂 )OriginalL'auteur Gary Green