瀏覽器 (JS 編輯樹)
│ AJAX POST (修改後的 JSON)
▼
ASP.NET 後端 (Web API / MVC Controller)
│ 反序列化 → 修改記憶體物件 / 直接覆寫 .js 檔案
▼
儲存層 (檔案系統 / 資料庫)
// 載入
fetch('/api/tree').then(r => r.json()).then(data => renderTree(data));
// 編輯後提交
function saveTree(modifiedData) {
fetch('/api/tree', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify(modifiedData)
}).then(r => r.json()).then(resp => console.log('saved', resp));
}
[HttpPost("api/tree")]
public IActionResult SaveTree([FromBody] JsonNode treeData) {
// 方案 A:直接覆寫 .js 檔案(簡單,適合靜態數據)
var jsContent = "var flare_data = " + treeData.ToJsonString() + ";";
System.IO.File.WriteAllText("wwwroot/data/flare_data.js", jsContent);
// 方案 B:存入資料庫(建議,支援並發、版本、查詢)
// _repo.Save(treeData);
return Ok(new { success = true });
}
lock (fileLock)。前端 AJAX POST JSON → 後端反序列化 → **持久化到資料庫**(推薦)或加鎖寫檔案。別把業務數據存在靜態 .js 裡,資料庫才是正解。