2010-05-28 4 views
0

J'ai un formulaire. J'essaie de le valider via les requêtes AJAX GET. Donc, j'essaye d'envoyer les valeurs de champ dans les données de demande GET.formulaire sérialiser problème

$('#uxMyForm').serialize(); 

le problème est qu'il renvoie quelque chose d'indéchiffrable. J'ai utilisé sérialiser avant. C'est totalement bizzare.

la valeur de retour de sérialisation est

actionsign_upcontrollersitedataauthenticity_token=oRKIDOlPRqfnRehedcRRD7WXt6%2FQ0zLeQqwIahJZJfE%3D&customer%5BuxName%5D=&customer%5BuxEmail%5D=&customer%5BuxResidentialPhone%5D=&customer%5BuxMobilePhone%5D=&customer%5BuxDateOfBirth%5D=&customer%5BuxAddress%5D=&customer%5BuxResidentialStatus%5D= 

Je ne sais pas comment l'utiliser.

Merci

mise à jour:

Ma question est de savoir comment traiter i faire une telle demande? comme ça?

puts params[:data][:customer][:uxName] 

mon déclencheur de requête GET ressemble à ceci

$.get('/site/sign_up',{data : $('#uxMyForm').serialize() }, function(data){ 
alert(data); 
}); 

Les lignes jquery ci-dessus génèrent la demande .. sur la méthode d'action i effectuer les opérations suivantes

render :text => params 

quand j'observe ce qui est envoyé dans le GET, dans firebug PARAMS

**data** authenticity_token=oRKIDOlPRqfnRehedcRRD7WXt6%2FQ0zLeQqwIahJZJfE%3D&direct_customer%5BuxName%5D=&direct_customer%5BuxEmail%5D=&direct_customer%5BuxResidentialPhone%5D=&direct_customer%5BuxMobilePhone%5D=&direct_customer%5BuxDateOfBirth%5D=&direct_customer%5BuxAddress%5D=&direct_customer%5BuxResidentialStatus%5D= 

la valeur de retour que j'imprimer en alerte a

actionsign_upcontrollersitedataauthenticity_token=oRKIDOlPRqfnRehedcRRD7WXt6%2FQ0zLeQqwIahJZJfE%3D&direct_customer%5BuxName%5D=&direct_customer%5BuxEmail%5D=&direct_customer%5BuxResidentialPhone%5D=&direct_customer%5BuxMobilePhone%5D=&direct_customer%5BuxDateOfBirth%5D=&direct_customer%5BuxAddress%5D=&direct_customer%5BuxResidentialStatus%5D= 
+0

Il est le formatage dans un format 'nom1 = valeur1 & nom2 = value2' ... même en tant que querystring dans votre navigateur (une requête GET), voici ce que vous voulez de' .serialize() ', si vous posté votre code de soumission, il sera plus facile de voir ce que vous êtes réellement après. –

+0

ont mis à jour .. Veuillez suggérer – ZX12R

Répondre

0

Comment se présente sous la forme elle-même. Je n'ai aucune expérience avec Ruby on rails - et si le formulaire est construit de manière excitante - mais il semble qu'il n'y ait que deux éléments de formulaire: authenticity_token et customer - où client est un tableau d'éléments. Ce sont les données que vous avez publié, mais je et mis url-décodées dans certains linebreaks:

authenticity_token=oRKIDOlPRqfnRehedcRRD7WXt6/Q0zLeQqwIahJZJfE= 
&customer[uxName]= 
&customer[uxEmail]= 
&customer[uxResidentialPhone]= 
&customer[uxMobilePhone]= 
&customer[uxDateOfBirth]= 
&customer[uxAddress]= 
&customer[uxResidentialStatus]= 

Ce que vous pouvez faire est de sérialisation sous la forme d'un tableau et le nettoyer avant de l'envoyer en utilisant demande ajax jQuery. J'ai fait quelque chose de similaire une fois quand je devais sérialisation .net éléments de formulaire runat-serveur:

var serializedData = $(form).serializeArray(); 
for(i=0; i < serializedData.length; i++) 
{ 
    // For each item in the array I get the input-field name after the last $ character 
    var name = serializedData[i].name; 
    var value = serializedData[i].value; 
    if(name.indexOf('$') != -1) 
     name = name.substr(name.lastIndexOf('$')+1); 
    serializedData[i].name = name; 
} 
var ajaxPostData = $.param(serializedData); 

Alors instad de $ ABCPlaceHolder $ blabla tbxEmail Je suis tbxEmail dans le tableau. Vous pouvez faire la même chose pour obtenir uxName, uxEmail etc à la place du tableau client. Notez cependant encore, en raison de mon inexpérience avec ruby ​​que ce n'est peut-être pas la meilleure solution - peut-être y a-t-il un paramètre que vous pouvez changer pour construire le formulaire HTML différemment?

Mise à jour:

Je ne sais pas comment fonctionne le rubis, mais après un googler je trouve que vous devriez être en mesure de recevoir vos valeurs en utilisant params: client comme un tableau.

params: le client doit contenir un tableau des valeurs

{:uxName => "", :uxEmail => "" } 

J'espère que vous dit quelque chose sur la façon de recevoir les données. Peut-être (avertissement - sauvage devinez!) Comme ça?

params[:customer][:uxName] 
+0

mon problème est que je ne suis pas en mesure d'accéder à l'une des valeurs affichées. – ZX12R

+0

essayé ... pas de chance ... la façon dont vous avez suggéré fonctionne habituellement pour les demandes de post ... il renvoie un zéro dans ce cas ... j'ai même essayé params [: data] [: client] [: uxName] .. – ZX12R

+0

Ok, pouvez-vous également envoyer la requête ajax complète, juste pour qu'il soit possible de rechercher des erreurs partout. Nous ne pouvons pas vraiment être sûr que quelque chose est réellement envoyé à la page je suppose :) – becquerel