拼接然后通过ajax保存json数组

时间:2018-01-12 16:34:24

标签: javascript arrays json ajax

我无法让我的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文件。

1 个答案:

答案 0 :(得分:2)

当您从服务器下拉json时,您没有获得对服务器上对象的引用,但您获得了数据的副本。

所以你只是修改客户端上的数据。

要更新服务器上的对象,您应该通知服务器的更改(或者反转逻辑,让服务器执行计算并直接在客户端上检索结果)。