单击时在服务器上的JSON文件中递增值

时间:2016-12-12 13:25:09

标签: javascript jquery json ajax

我有一个柜台。它从JSON文件中获取值,保存在服务器上。这部分很好用。

$(document).ready(function() {
    var users = (function () {
    var users = null;
    $.ajax({
        'async': false,
        'global': false,
        'url': 'http://toriya8.ru/new-year/users.json',
        'dataType': "json",
        'success': function (data) {
            users = data.users_value;
        }
    });
    return users;
})();
    $('#counter-number').text(users*=1000);
});

但我想在点击时增加users_value。 (这将是未来的表格发送)。  我试过这个:

$('.counter').click(function() {
  $.ajax({
      url: 'http://toriya8.ru/new-year/users.json',
      type: 'POST',
      data: {increment: true},
      success: function() { console.log('Request has returned') }
  });
});

而且:

$('.counter').click(function() {
  $.ajax({
      url: 'http://toriya8.ru/new-year/users.json',
      type: 'POST',
      success: function(data) {
        data.users_value += 1;
        console.log('Request has returned')
      }
  });
});

两者都会触发控制台消息,但不会更改JSON文件中的数据。

这是我的users.json文件:

{
  "users_value" : 3
}

P.S。在Stackoverflow上找到很多信息,但没有任何帮助。

1 个答案:

答案 0 :(得分:0)

所以我终于找到了答案。真的我完全忘记了服务器端。 这是一个解决方案:

JS:

$(document).ready(function() {
  var users = (function () {
    var users = null;
    $.ajax({
      'async': false,
      'global': false,
      'url': 'http://toriya8.ru/new-year/users.json',
      'dataType': "json",
      'success': function (data) {
        users = data.users_value;
      }
    });
    return users;
  })();
  $('#counter-number').text(users*=1000);

  $('.counter').click(function() {
    $.post("parser.php",{ajax: true});
  });
});

PHP:

<?php
$jsonString = file_get_contents('users.json');
$data = json_decode($jsonString, true);

$data['users_value'] += 1;

$newJsonString = json_encode($data);
file_put_contents('users.json', $newJsonString);
?>

和JSON:

{
  "users_value" : 3
}