Mám problémy so získaním môjho súboru jsonprijať zmeny. Snažím sa odstrániť objekt z poľa a zdá sa, že funguje, ale potom, keď sa pozriem na pole json na serveri, zostáva nezmenený. Čo mi tu chýba?
Tu je funkcia, ktorú používam:
$(function() {
$("#rectangle-delete").click(function() {
var selection = $("#templateSelection > option:selected").text();
var json = (function () {
var json = null;
$.ajax({
"async": false,
"global": false,
"type": "POST",
"contentType":"application/json",
"url": "server/php/data/" + selection,
"dataType": "json",
"success": function (data) {
json = data;
}
});
return json;
})();
var ID_clicked = $(".rectangle.selected.targeted").attr("id");
console.log("initial array is " + json);
json.some(function(e) {
if (e.ID === ID_clicked) {
var values = json.map(function(e) { return e.ID; });
var index = json.map(function(e) { return e.ID; }).indexOf(ID_clicked);
var data = JSON.stringify(json[index]);
json.splice(index, 1);
return true; // stop the array loop
}
});
console.log("new array is " + json);
});
});
Konzola zobrazuje:
initial array is [object Object],[object Object],[object Object]
a potom
new array is [object Object],[object Object]
ale stále nemením skutočné json
súbor na serveri.
odpovede:
2 pre odpoveď č. 1Keď stiahnete zo servera json, nedostanete odkaz na objekt na serveri, ale dostanete kópiu údajov.
Takže iba upravujete údaje o svojom klientovi.
Ak chcete aktualizovať objekt na serveri, mali by ste oznámiť zmenu na serveri (alebo zvrátiť logiku, ktorá umožní serveru vykonať výpočet a získať výsledok priamo na klientovi).