2008-12-29 12 views
3

Je voudrais prendre un ensemble de contrôles (INPUT, SELECT, TEXTAREA) qui sont contenus dans un DIV et envoyer leurs valeurs comme JSON via Ajax à un serveur. C'est assez facile avec serializeArray de jQuery.Chargement des contrôles HTML de JSON dans jQuery (c'est-à-dire, inverse de Ajax serialiseArray)

Cependant, je veux alors que le serveur réponde avec la même structure de JSON qui a été envoyée et recharger les valeurs de contrôle en utilisant le JSON fourni. Je ne trouve rien dans la documentation jQuery qui rende cette opération simple. Est-ce que je manque quelque chose ou ai-je besoin de le construire moi-même?

Répondre

2

Les contrôles de formulaire ne sont pas liés à des données JSON. Les données JSON peuvent être destinées à n'importe quel but, vous devrez donc créer une fonction pour prendre le résultat JSON et manipuler les éléments du formulaire vous-même.

Les formulaires sont trop complexes pour que jQuery les gère nativement. Dans le passé, j'ai écrit des frameworks pour construire des formulaires à partir de définitions basées sur XML/JSON et pour gérer le transport de données en utilisant le même. Ce n'est pas si difficile à faire soi-même, mais ce n'est pas quelque chose de intégré.

J'ai jeté un coup d'œil rapide sur les plug-ins et je n'ai rien remarqué de particulier, bien que cela semble être une bonne idée. Cela ressemble plus à quelque chose qui serait supporté par Ext.js.

+0

J'ai compris que les contrôles ne sont pas liés à JSON. Le JSON est transitoire, il ne vient en existence que lorsque serializeArray est appelé et que JSON particulier meurt après l'envoi de la requête. Je voudrais faire l'inverse de serializeArray sur le JSON dans la réponse. – AnthonyWJones

4

pourquoi pas seulement le serveur Renvoyez la même: controlname: structure de valeur, puis lire que dans jQuery et utiliser quelque chose comme:

$("*[name='" + controlname + "']").val(value); 

Ou encore plus facile: controlID: Valeur

$("#" + controlID).val(value); 
+0

Oui retourner la même structure que celle générée par serializeArray est ce que j'ai indiqué dans la question, c'est fondamentalement un tableau de clé/valeurs. – AnthonyWJones