【发布时间】:2018-01-12 16:34:24
【问题描述】:
我无法让我的 json 数组接受更改。我正在尝试从数组中删除一个对象,它似乎可以工作,但是当我查看服务器上的 json 数组时,它保持不变。我在这里错过了什么?
这是我正在使用的功能:
$(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);
});
});
控制台显示:
initial array is [object Object],[object Object],[object Object]
然后
new array is [object Object],[object Object]
但我仍然没有更改服务器上实际的 json 文件。
【问题讨论】:
-
任何本地更改都必须发送到服务器,服务器端脚本必须进行任何文件修改。永远不要使用
async:false。这是一种可怕的做法,已被弃用。您应该会在浏览器控制台中看到有关该弃用的警告
标签: javascript arrays json ajax