2011-04-28 6 views
0

Je possède ce code jquery:paramètre jquery pas passé à servlet

var login = 'joe'; 
var url = 'users/' + login + '/presence'; 
var data = { 
    presence : $('#presence').val() 
}; 
$.ajax({ 
    url: url, 
    type: 'POST', 
    data: data 
}); 

Dans mon code servlet, je pense être la table à faire:

request.getParameterValues("presence") 

Cependant, il retourne toujours null. Si je change l'url dans l'appel ci-dessus et ajoute manuellement le paramètre (par exemple url = 'users /' + login + '/ présence? Presence =' + $ ('# présence) .val()) alors je peux obtenir la valeur en utilisant request.getParameterValues.

Qu'est-ce que je fais mal?

+0

utilisez .getParameter si vous récupérez une seule valeur. utiliser .getParameterValues ​​si son un tableau (une telle liste des cases qui ont été vérifiés) –

+0

@John Cela n'a pas d'importance - vous obtiendrez un tableau de longueur 1 s'il y a une seule valeur. –

+0

Il est nul dans les deux cas. – dcp

Répondre

1

Il est logique que les paramètres ne soient accessibles dans la méthode doGet(), parce qu'ils ont été transmises sous forme de données de formulaire.

Tout d'abord, assurez-vous absolument certain que vous n'êtes pas appeler la même URL avec GET d'ailleurs et vous déboguez la mauvaise chose.

voir alors qu'est-ce que Firebug vous dire au sujet des demandes. Par exemple quelle est la méthode utilisée pour faire la demande. Et quelles données sont envoyées.

essayez d'utiliser $.post(..).

Enfin, assurez-vous qu'il n'y a pas de proxy malveillant qui transforme POST requêtes en GET.

+0

Merci pour vos suggestions. Je pense que je vais essayer de faire une application simple de preuve de concept pour voir si je peux le faire fonctionner avec ça. Ensuite, je peux essayer de réduire les choses à partir de là. – dcp

+0

FYI, j'ai mis en place une toute nouvelle application et l'ai mise au travail, donc ça doit être quelque chose avec l'application particulière avec laquelle je travaille. Merci encore pour votre temps et vos suggestions. – dcp

+1

@All - Au cas où quelqu'un serait intéressé, j'ai finalement compris ce qui se passait. Il y avait un code mal doFilter/doFilterRequest qui manipulait les paramètres avant d'arriver au doGet dans le servlet. Donc, le paramètre a été défini quand il est passé à doFilter, mais doFilter le mangeait essentiellement. Mystère résolu! – dcp

-1

Essayez de vous créer des données pour envoyer servlet

data : name1=value1&name2=value

Servet peut obtenir des paramètres comme request.getParameter(name1)

Hope this helps!

+3

Selon http://api.jquery.com/jQuery.ajax/, 'data' peut être un objet. – Kobi

+0

** EDIT **: 'données:" nom1 = valeur1 & nom2 = valeur "' – CagdasOl

+1

c'est faux les données peuvent aussi être un objet – Neal

Questions connexes