【问题标题】:store link clicks in json file将链接点击存储在 json 文件中
【发布时间】:2020-10-29 17:08:18
【问题描述】:

我有一个点击计数器,它适用于一个链接,但我希望这段代码可以运行多个链接

这是一个完美适用于一个链接的代码:

<a class="counter" href="#">Title</a>

js代码:

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

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

PHP 代码(parser.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":17}

我希望这段代码针对多个链接运行,例如:

<a href="#" data-id="link1">title1</a>
<a href="#" data-id="link2">title2</a>

并将每个链接的点击分别存储在json文件中

【问题讨论】:

  • 代码不工作是什么意思?如果您需要捕获多个链接,请像您一样使用类选择器。如果要更新 DOM 中的某些内容,遍历代码,使用 .find()、.parents() 等与 $(this) 组合
  • 它适用于一个链接,我需要按 id 将每个链接点击存储在 json 中,如下所示:{"link1":20, "link2":30}
  • 然后在链接上使用 data-linkid: 属性,$(this).data("linkid")

标签: php json ajax


【解决方案1】:

您可以使用以下代码: PHP

function objectToArray( $object ) {

if( !is_object( $object ) && !is_array( $object ) )
{
    return $object;
}
if( is_object( $object ) )
{
    $object = get_object_vars( $object );
}
return array_map( 'objectToArray', $object );
}

function ip() {
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
    $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CLIENT_IP'];
} else if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
$_SESSION["REMOTE_ADDR"] = $_SERVER["REMOTE_ADDR"];

return $_SESSION["REMOTE_ADDR"];
}
$last_dy = date("d") - 1;
if (file_get_contents('users_'.$last_dy.'_ip.json')) {
@unlink('users_'.$last_dy.'_ip.json');
}
if (!file_get_contents('users_'.date("d").'_ip.json')) {
file_put_contents('users_'.date("d").'_ip.json','[]');
}
$users_ip = objectToArray(json_decode(file_get_contents('users_'.date("d").'_ip.json')));
if (!is_object($users_ip) OR !is_array($users_ip)) {
$users_ip = array();
}
 if (!in_array(ip(), $users_ip)) {
$jsonString = file_get_contents('users.json');
$data = objectToArray(json_decode($jsonString));
$data['users_value'] = $data['users_value'] + 1;
$newJsonString = json_encode($data);
file_put_contents('users.json', $newJsonString);
 array_push($users_ip, ip());
 }
 file_put_contents('users_'.date("d").'_ip.json', json_encode($users_ip));

你可以在javascript代码中使用“函数”,更好

【讨论】:

    猜你喜欢
    • 2015-10-20
    • 2019-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多