2010-10-26 6 views
3

J'ai un bouton sur mon fichier de vue Ruby on Rails. Tout d'abord, lorsque le bouton est cliqué, un appel Ajax est fait qui, en réponse, donne une chaîne JSON. Jusqu'à présent, j'ai accompli cette tâche.Envoyer une chaîne JSON en tant que paramètre à une action

Voici où je suis coincé: Le bouton me redirige également vers une autre action du même contrôleur. Maintenant, je veux envoyer la chaîne JSON reçue par JavaScript en tant que paramètre de cette action.

Y a-t-il un moyen de contourner ce problème?

Répondre

3

Votre appel ajax devrait ressembler à ceci:

... doing stuff before ... 

$.ajax(
    url:'url-to-script', 
    success: function(data) { 
    var json = JSON.parse(data); 
    $('#hidden-field').val(json); // set a hidden field in your form 
    $('#from-id').submit(); 
    } 
); 

$('#submit-button').attr('disabled', 'true'); // disable the button 
// set some spinny animation to notify the user that you are waiting. 
// time out after a while if you don't get a response 

... doing stuff after ... 

Fondamentalement, nous tirer hors de l'événement ajax, désactivez le bouton et avertir l'utilisateur que vous attendez. Lorsque l'appel revient, votre méthode de rappel soumet le formulaire aux rails. Vous pouvez également définir un délai pour l'appel ajax et laisser l'utilisateur renvoyer si nécessaire. Vous pouvez gérer le cas d'erreur comme vous le souhaitez.

+0

Considérons un scénario: Vous êtes un serveur "A". Il donne un script à son client 'B' pour qu'il s'exécute sur le site de B. B a un client 'C' qui visite le site de B et essaye d'accéder au script que vous avez donné à B. Donc B va d'abord authentifier C et fournir les informations d'identification de l'utilisateur à A au format JSON puis la partie rails sera exécutée et C les données seront sauvegardées sur le serveur de A. C'est un peu que j'essaie de faire. J'espère que vous avez une idée claire maintenant. – Rohit

+0

Got it, posté édité. Est-ce proche de ce que vous cherchez? – shoebox639

Questions connexes