Comment puis-je définir mes données en tant que JSON dans un champ de saisie masqué
J'ai un champ de saisie comme celle ci-dessous
<input type="hidden" value="" id="inputField">
Maintenant, j'ai la liste de produits et pour chaque produit, j'ai une case à cocher. Lorsqu'un utilisateur clique sur la case, j'ai l'id de produit et le nom. Maintenant, je veux l'enregistrer à nouveau dans le champ caché comme ci-dessous
<input type="hidden"
value="[{"product_id":123,"name":"stack"},{"product_id":456,"name":"overflow"}]"
id="inputField"
>
Ma première question est comment je peux faire et comment puis-je créer le JSON?
Deuxièmement, si l'utilisateur supprime un produit case, puis j'ai besoin d'obtenir le courant caché de la valeur et de la convertir en quelques structures de données, de supprimer le décochée id de la structure de données, puis enregistrez-le à nouveau dans le champ caché.
Est-il de la bibliothèque qui fait ce travail en JavaScript?
source d'informationauteur user882196
Vous devez vous connecter pour publier un commentaire.
À l'aide de jQuery:
HTML:
JS:
Les blocs de construction que vous recherchez sont
JSON.stringify
etJSON.parse
;Maintenant, chaque fois que l'une de vos cases à cocher change d'état, vous obtiendrez l'objet dans le champ caché et de le modifier. Après la modification de l'objet, vous souhaitez enregistrer la chaîne vers le champ caché.
De lire et de stocker la valeur de/pour le champ caché:
Vous manque encore la modification de votre tableau qui vous ferait similaires à:
Concernant les bibliothèques: Probablement la plupart ne contient le code pour faciliter la matrice de la manipulation et à l'environnement de données du formulaire. Consultez la documentation de jQuery ou prototype ou l'autre des réponses pour des exemples.
Juste une pensée: ne Serait-il pas plus simple de jeter l'idée d'utiliser le champ caché et transférer les cases à cocher pour le serveur à la place. Si la case est cochée, l'utiliser, sinon ignorer la corrélation des données de produit.
En JavaScript, suffit d'attribuer la valeur:
Dans un langage côté serveur, encoder au format JSON dans le HTML, par exemple avec php
htmlspecialchars
ou pythonhtml.escape
. Le résultat ressemblera à ceci:Comme il est indiqué dans d'autres réponses ci-dessous, à convertir en JSON à la chaîne, l'utilisation de JSON.stringify() la fonction comme ceci:
Et vous obtenez une représentation de chaîne d'objet JSON dans
var json
. Pour ce faire, d'autres chemin de ronde, de sorte que vous pouvez mettre à jour le véritable objet JSON contenues dans cette chaîne, vous pouvez utiliser la fonction eval:Maintenant, d'origine objet JSON est recréé, et vous pouvez les mettre à jour, et re-strigify il est de retour à champ caché ou certains autres var...
Je suis encore un peu confus au sujet de votre question, mais si vous êtes tout simplement de stocker le nom et l'id de l'entrée des cases qui sont cochées, vous pouvez le faire très simplement à l'aide de jQuery.
La variable
jsonArray
détient désormais une chaîne json similaire à l'exemple que vous avez posté. Vous pouvez utiliserJSON.stringify(jsonArray)
voir.Il n'est pas nécessaire de créer le champ caché, la tenue de cette chaîne de la valeur et d'essayer d'ajouter et de supprimer de case états changement. Il suffit d'exécuter le javascript lorsque la page est prête à changer via le bouton de clic, etc.
Meilleur de la chance.
Si vous avez un objet JSON, l'enregistrer dans le champ caché à l'aide de
JSON.stringify
:Je vous suggérons d'utiliser le
encodeURIComponent
fonction. En collaboration avec leJSON.stringify
nous devrions avoir quelque chose comme ce qui suit:Maintenant que la valeur peut être stocké en toute sécurité dans un input type hidden:
Maintenant pour lire les données du retour, nous pouvons faire quelque chose comme:
Ajouter de la bibliothèque
"<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>"
Utiliser: ${fn:escapeXml(string1)}
input type="hidden" value="${fn:escapeXml(string1)}" id="inputField"