RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1145748
Accepted
Иван
Иван
Asked:2020-06-26 05:30:11 +0000 UTC2020-06-26 05:30:11 +0000 UTC 2020-06-26 05:30:11 +0000 UTC

如何通过 json 文件中的 id 检查和比较参数值?

  • 772

从 ajax 中的 rss 提要获取数据。

<p><a href="https://site.ru" target="_blank">test 1</a> <check>47534</check></p>
<p><a href="https://site.ru" target="_blank">test 2</a> <check>4534</check></p>
<p><a href="https://site.ru" target="_blank">test 3</a> <check>45364</check></p>
<p><a href="https://site.ru" target="_blank">test 4</a> <check>4534</check></p>
<p><a href="https://site.ru" target="_blank">test 5</a> <check>7373</check></p>

我需要动态处理它们并在提要数据发生变化的情况下对 ajax 产生影响。

为了了解数据是否发生了变化,我首先将其写入一个 JSON 文件,id 并检查(检查可能会改变)。

[{"id":{"0":"123456"},"check":{"0":"3490"}},{"id":{"0":"678912"},"check":{"0":"1790"}}]

此外,在更新ajax时,您需要检查带有$id的数组以获取存储在json中的$id和$check,如果$check发生了变化,请设置该行的类。如果 id 不在 json 库中,则将其写下来以供以后比较。

ajax.php

$url = "https://site.ru/cached-index.xml";
$content = file_get_contents($url);
$items = new SimpleXmlElement($content);

// запись файла
$json = json_decode(file_get_contents('data.json'), true);

$json[] = [
  'id' => $item->id,
  'check' => $item->check
];


foreach($items -> channel -> item as $item) {

print '<p><a href="' . $item->link . '" target="_blank">' . $item->title . '</a> <check>' . $item->check . '</check></p>';

}  

file_put_contents('data.json', json_encode($json));

$a = полученный check;
$aa = check из json;

$response = ($a != $aa);

if($response === true){
echo 'здесь нужно прописать класс, значение изменилось!';
}else{
echo 'без изменений';
} 

页

<div id="ajax"></div>
<script type="text/javascript">
    function show()  
    {  
        $.ajax({  
            url: "ajax.php",  
            cache: false,  
            success: function(html){  
                $("#ajax").html(html);  
                $('.box').first().addClass('animate__animated animate__bounce');
            }  
        });  
    }  
  
    $(document).ready(function(){  
        show();  
        setInterval('show()',1000);  
    });  
</script>

如何通过 id 检查检查并在此行发生更改时注册<p class="box">?

像这样的json

[{"id":{"0":"123456"},"check":{"0":"3490"}},{"id":{"0":"678912"},"check":{"0":"1790"}}]

如果数组中的 id 尚未在 json 中,如何保存数据?

有些东西完全混淆了,数据不断地存储在 json 中。如何正确记录和检查数据?

也许js允许你在ajax更新之前保存检查值而无需额外的操作?

php
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    Максим Степанов
    2020-06-26T07:15:52Z2020-06-26T07:15:52Z

    据我理解的任务,服务器部分应该简单地返回更新的记录,如果有的话。也就是说,分为三个阶段:

    1. 获取当前 rss 数据
    2. 更新数据库中的文件 - 添加更新的记录(如果有)。
    3. 给浏览器一个更新记录的列表。

    事实证明是这样的:

    // как-то получаем rss
    $url = "https://site.ru/cached-index.xml";
    $content = file_get_contents($url);
    $items = new SimpleXmlElement($content);
    
    // читаем из файла или, если файла еще нет, создаем пустой массив для хранения rss в json-базе
    $saved_data_path = '/path/to/json';
    $saved_data = (file_exists($saved_data_path)) ? json_decode(file_get_contents($url), true) : array();
    
    // создадим массив для хранения новых записей rss
    $new_rss_records = array();
    
    // смотрим все записи rss. 
    foreach($items->channel->item as $item) {
        if(!array_key_exists($item->id, $saved_data) || $saved_data[$item->id]['check'] != $item->check){
            // Если какой-то записи нет в $saved_data или обновлено значение 'check', запишем ее
            $saved_data[$item->id] = (array) $item;
            // и сохраним для ответа 
            $new_rss_records[$item->id] = $saved_data[$item->id];
        }
    }
    
    // если есть новые записи, сохраняем $saved_data
    if(!empty($new_rss_records)){
        file_put_contents($saved_data_path, json_encode($saved_data));
    }
    
    // отдаем json с новыми записями
    echo json_encode($new_rss_records);
    

    在js中,接受json并已经输出为链接

    $.ajax({
        url: 'ajax.php',
        dataType: 'json',
        cache: false,
        success: function(jsonData){
            for(var rss_id in jsonData){
                // получаем элемент с текущим атрибутом rss_id
                let item = $('#ajax a[rss_id='+rss_id+']');
                
                if(item[0]){
                    // если есть, обновляем его класс
                    $(item).addClass('animate__animated animate__bounce');
                } else {
                    // если нет, создаем новый элемент и добавляем к ('#ajax')
                    $('<a>', {
                        rss_id: rss_id,
                        href: 'https://site.ru', 
                        target: '_blank',
                        text: 'test 2',
                        check: jsonData[rss_id]['check']
                    }).appendTo('#ajax');
                }
            }
        }
    });
    
    • 1

相关问题

  • mysqli 类的对象无法转换为字符串

  • 您的系统中缺少 ext-http *,您的系统中缺少 ext-mysql_xdevapi *

  • 如何从csv中删除bom?

  • 当我按下 Enter 键时,如何让 PhpStorm 的 Emmet 插件触发,就像 VS Code 一样?

  • 注释在 Symfony5 中不起作用

  • 搜索最近的地理位置点

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    如何从列表中打印最大元素(str 类型)的长度?

    • 2 个回答
  • Marko Smith

    如何在 PyQT5 中清除 QFrame 的内容

    • 1 个回答
  • Marko Smith

    如何将具有特定字符的字符串拆分为两个不同的列表?

    • 2 个回答
  • Marko Smith

    导航栏活动元素

    • 1 个回答
  • Marko Smith

    是否可以将文本放入数组中?[关闭]

    • 1 个回答
  • Marko Smith

    如何一次用多个分隔符拆分字符串?

    • 1 个回答
  • Marko Smith

    如何通过 ClassPath 创建 InputStream?

    • 2 个回答
  • Marko Smith

    在一个查询中连接多个表

    • 1 个回答
  • Marko Smith

    对列表列表中的所有值求和

    • 3 个回答
  • Marko Smith

    如何对齐 string.Format 中的列?

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5