J'ai un fichier JSON externe et j'ai besoin de mettre à jour certaines valeurs par ID, J'utilise uniquement HTML et JQuery
1 - Fichier JSON externe P>
p>
$("#btnUpdateJson").click(function(){ var Id = $("#txtId").val(); var startTime = $("#txtStartTime").val(); var endTime = $("#txtEndTime").val(); $.getJSON( "../Admin/Data/fileName.json", function( data ) { $.each(data, function(i, item){ if (data[i].Id == Id){ // What can i do to update // StartTime and EndTime ? // where Id in jsone file = Id from html } }); }); });
3 Réponses :
Si l'utilisateur sélectionne un fichier via lire ou écrire des fichiers arbitraires n'est pas autorisé par conception. C'est une violation du bac à sable. P> En d'autres termes, vous ne pouvez pas simplement essayer d'accéder à un fichier via HTML, vous pouvez voir les préoccupations de sécurité pouvant suivre cela. Donc, à moins que vous tirez à partir d'une API / serveur qui dispose de ces données, vous devez ajouter une option d'entrée, l'utilisateur sélectionnera le fichier, puis votre fonction peut fonctionner contre elle. P> Voici la solution dans nœud p> sortie p>
// server side example const express=require('express'); const app = express(); const fs = require('fs'); const bodyParser=require('body-parser'); app.use(bodyParser.json()); app.put('your/end/point, (req, res)=>{ let id = req.body.id; let startTime = req.body.startTime; let endTime = req.body.endTime; if(!id || !startTime || !endTime) return res.status(400).send({ error:'id, startTime and endTime are required!' }); fs.readFile(__dirname + '../Admin/Data/fileName.json,'utf-8', (err, data)=>{ if(err) return res.send({error:err}); let myTimesList = JSON.parse(data); let idFound = false; for (let i = 0; i < myTimesList.length; i++) { if (id == myTimesList[i].id){ let newTime ={id, startTime, endTime } myTimesList.splice(i, 1, newTime); idFoud = true; break; } } if(!idFound) { return res.send({ error:'invalid id!' }); } fs.writeFile(__dirname +'../Admin/Data/fileName.json,'utf-8' , JSON.stringify(myTimesList), 'utf-8', (err)=>{ if (err) return res.send({error:err}); return res.send({message:'Your file has been updated'}); }); }); });
Merci pour Replay ... Voulez-vous dire que je dois rechercher io à l'aide de JavaScript?
Avez-vous un exemple?
Vos données deviennent dans l'élément et vous pouvez maintenant prendre des identités dans un fichier externe
Quel script vous utiliserez?
JavaScript et HTML seulement
Ensuite, ce que vous essayez de faire n'est pas possible dans les JS côté client uniquement comme vous avez besoin de la logique côté serveur pour recevoir la demande et écrivez le fichier. Cependant i> Il est à noter que la mise à jour des données dans le système de fichiers sur un serveur public n'est pas une bonne idée pour un tas de raisons entières, notamment une évolutivité. Je vous suggère fortement que vous utilisez une base de données à la place.
Merci de rejouer. Mais je pense que le JavaScript peut accéder aux fichiers.
Vous pouvez mettre à jour les valeurs localement, mais il n'ya aucun moyen de sauvegarder ces valeurs sur le serveur. Cela va nécessiter une langue latérale du serveur.