簡體   English   中英

使用jQuery更新外部JSON文件中的值

[英]Update value in external JSON file using jquery

我有一個外部JSON文件,我需要通過ID更新一些值,我僅使用HTML和Jquery

1-外部JSON文件

 [ {"Id":1,"startTime":7.665519,"endTime":15.701717}, {"Id":2,"startTime":18.9402,"endTime":23.036628}, {"Id":3,"startTime":27.398977,"endTime":33.404313}, {"Id":4,"startTime":37.254842,"endTime":41.127843}, {"Id":5,"startTime":44.534945,"endTime":50.064397}, {"Id":6,"startTime":44.534945,"endTime":50.064397}, {"Id":7,"startTime":44.534945,"endTime":50.064397} ] 

  $("#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 } }); }); }); 

如果用戶通過<input type="file">選擇文件,則可以使用File API讀取和處理該文件。

設計不允許讀取或寫入任意文件。 這違反了沙箱。

換句話說,您不僅可以嘗試通過html訪問文件,還可以看到隨之而來的安全隱患。 因此,除非您從具有該數據的api /服務器中提取數據,否則您將不得不添加輸入選項,然后用戶將選擇該文件,然后您的函數便可以針對該文件運行。

這是節點中的解決方案

const fs = require('fs');

var update_entry = (id, st, et, fn) => {
    var old_instance = JSON.parse(fs.readFileSync(`${fn}`, 'utf-8')); // Read the json file in
    let found = old_instance.find(record => { return record.Id == id }); // Find the object by Id
    st != null ? found.startTime = st : ''; // If not null, set value
    et != null ? found.endTime = et : ''; // If not null, set value
    let new_instance = old_instance.filter(record => { return record.Id != id }); // Copy original array besides found record
    new_instance.push(found);return new_instance; // Add found record to new array and return
}

var updated = update_entry(2, 5.9999, null, 'data.json');
console.log(updated);

輸出量

[ { Id: 1, startTime: 7.665519, endTime: 15.701717 },
  { Id: 3, startTime: 27.398977, endTime: 33.404313 },
  { Id: 4, startTime: 37.254842, endTime: 41.127843 },
  { Id: 5, startTime: 44.534945, endTime: 50.064397 },
  { Id: 6, startTime: 44.534945, endTime: 50.064397 },
  { Id: 7, startTime: 44.534945, endTime: 50.064397 },
  { Id: 2, startTime: 5.9999, endTime: 23.036628 } ]

 // 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'}); }); }); }); 

我認為要更新json文件的內容,您應該具有運行NodeJS之類的后端並使用文件系統“ fs”:-

第一步:讀取文件並解析。

第二步:檢查您要更改的位置。

第三步:您已經有了文件的新內容,必須進行字符串化

第四步:現在,您的新數據已准備好再次寫入文件。

希望這會幫助你。

您的數據成為項,現在您可以在外部文件中獲取ID

if (item.Id == Id)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM