2010-11-02 5 views
1

Je suis un problème qui m'a rendu fou pour un certain temps maintenant. Voici la mise en place:en utilisant jQuery ajax post pour soumettre des données sérialisées

J'ai une liste déplaçable qui est utilisée pour la navigation de l'utilisateur. Je voudrais enregistrer comment l'utilisateur commande la liste à une base de données afin qu'elle soit la même la prochaine fois qu'elle charge la page. J'utilise (ou essaye de) utiliser un appel ajax pour enregistrer la commande.

Voici mon jQuery:

$(document).ready(function() {  
$("#sortable").sortable({ 
      revert: true, 
      stop: function(event, ui) { 
       var aResult = $('#sortable').sortable('toArray');  
       postChanges(aResult);   
      } 
     });   

}); 

function postChanges(result) { 

$.ajax({ 
    type: "POST", 
    url: "model/customNav.cfm", 
    data: {order: result },    
    timeout: "5000" 

}); 
} 

Sur la page cfm « CustomNav » Je suis simple cfdump pour vider la forme variable sur pour vous assurer que les données s'envoyé correctement: (j'ai essayé de poster une image mais je suis trop nouveau, je vais essayer de "dessiner" les résultats du cfdump)


|
| Noms de champs | COMMANDER [] |
| COMMANDER [] | 3,2,1 |

Le problème est, comment puis-je accéder aux données de commande? Je me suis dit que parce qu'il vidait la structure du formulaire, j'utiliserais la notation par points pour avoir accès à la commande (c'est-à-dire, form.order). Cela ne fonctionne pas. Lorsque j'essaie de vider form.order, j'obtiens une erreur indiquant que l'ordre des variables n'est pas trouvé dans le formulaire.

Je soupçonne que cela a à voir avec la façon dont j'envoie les données à la page coldfusion, mais je ne suis pas sûr de ce que je fais mal. Donc ma question est, si j'envoie correctement les données à la page coldfusion, comment y accéder? Si je n'envoie pas correctement les données, où est-ce que je me suis trompé?

Merci beaucoup!

Répondre

1

Vous pouvez également essayer simplement d'accéder au formulaire ["order []"]

+0

Cela a fonctionné!Cela me permet de faire un cfloop sur la liste passée. Merci encore. – wblakenc

0

La dernière fois que je voyais une question très similaire (? Exacte), la réponse était qu'il y avait un

<CFSET SetEncoding("FORM", "iso-8859-1") /> 

dans le application.cfc/application.cfm qui a été à l'origine des problèmes:

After jquery post I can't read form values with coldfusion

+0

Merci pour le lien, mais malheureusement ce n'est pas le problème. Mon application.cfm n'a rien de plus que des variables d'application de base (nom, timeout, etc.). – wblakenc

0

Je l'ai fait ce matin.

var aResult = $ ('# sortable'). Sortable ('toArray');

Remplacez aResult par $ ('# sortable'). Sortable ('serialize', {key: order});

qui changera aResult d'être l'ordre [] pour être l'ordre = 3 & order = 2 & order = 1

Exécuter cette chaîne par ListToArray(), et vous aurez une vraie gamme Cold Fusion.

+0

Merci pour la réponse. Cependant, cela n'a pas fonctionné pour moi. Si j'utilise: 'serialize', {key: order} j'obtiens une erreur que 'order' n'est pas définie. Si je le change en 'serialize', {key: 'order'} et change les données qui sont passées dans le serveur de: {order: result} pour le résultat il passe une chaîne vide dedans. Suis-je quelque chose manquant? – wblakenc

Questions connexes