首页 > 其他分享 >基于jQuery的用户自定义页面

基于jQuery的用户自定义页面

时间:2024-07-25 12:07:22浏览次数:7  
标签:jQuery 自定义 html PLC 刷新 data 页面

1. 需求

  • 在最简单的场景里面,我们需要在用户自定义页面显示一些数据,和输入一些数据。如下源代码:
<!-- AWP_In_Variable Name='"enable_cycle"' -->
<!DOCTYPE html
  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://wwww.w3.org/1999/xhtml">

<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  <meta http-equiv="Refresh" content="5" />
  <title>COMM_Func</title>
</head>

<body>
  <p><strong>数据读取</strong></p>
  <p>总计数 :="totalCnt":</p>
  <p>总错误进位 :="faultCntC":</p>
  <p>总错误 :="faultCnt":</p>
  <p>当前循环过程数据 :="CurrData":</p>


  <p><strong>数据写入</strong></p>
  <form action="" method="post">
    <input name='"enable_cycle"' type="text" />
    <input name="" type="submit" value="开始使能" />
  </form>
</body>
</html>
  • 在这个静态页面里面,用到<meta http-equiv="Refresh" content="5" />做5秒一次的刷新。
  • 这里有个痛点,每次刷新的时候是把整个页面一起刷新的。一方面造成刷新页面特别慢,另一方面这种刷新把post的数据一起给刷新了/比如我需要提交的数据还没输入完,结果刷新时间到,全部给我刷没了,很是烦人。

2. 想一种可以不用每次都刷整个页面的方法

  • 需求就是定时去刷新PLC读取到的显示数据,post的数据需要人为触发。
  • 这里面就需要用到java script和jQuery
  • 实现后的源代码如下:
// 需要用作定时刷新的数据,这里新建了一个叫做DataBase.html的文件专门来存放,这是个JSON格式,右边遵循西门子AWP读数据指令格式。
// 关于为什么不直接建立一个.json的文件?因为AWP读数据的写法包含不符合json字符格式规定的不合规字符,会报错。所以我只能用.html代替
{
"totalCnt": ":="totalCnt":",
"faultCntC": ":="faultCntC":",
"faultCnt": ":="faultCnt":",
"CurrData": ":="CurrData":"
}
// 需要被定时刷新的实现方法,这里新建了一个叫ReadData_script.js的文件:
//$表示用的是一个jQuery方法
// ajaxSetup({cache:false});表示不保存缓存,每次都实时刷新
//# 表示这是html的元素id,js根据元素id来找到元素显示位置
//getJSON是获取json格式方法
//setInterval是定时刷新方法


$(document).ready(function () {
    $.ajaxSetup({
        cache:false
    });// make sure refresh data every time instead of cache data

    //set interval as 1000ms, include function of fetch data from server
    setInterval(function fetchdata(){
      $.getJSON('DataBase.html', function (data) {
            //required field
            $('#totalCnt').text(data.totalCnt);
            $('#faultCntC').text(data.faultCntC);
            $('#faultCnt').text(data.faultCnt);
            $('#CurrData').text(data.CurrData);
        });
    }, 1000)

});
// html主页面

<!-- AWP_In_Variable Name='"enable_cycle"' -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://wwww.w3.org/1999/xhtml">

<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  <title>CP341_COMM_CP1241_Func</title>
  <script src="jquery-3.6.0.min.js"></script>
  <script type="text/javascript" src="ReadData_script.js">
   
  </script>
</head>

<body>
  <div>
    <p><strong>数据读取</strong></p>
    <p>总计数:<sapn id="totalCnt">0</span></p>
    <p>总错误进位:<sapn id="faultCntC">0</sapn></p>
    <p>总错误:<sapn id="faultCnt">0</sapn></p>
    <p>当前循环过程数据:<sapn id="CurrData">0</sapn></p>
  </div>
  
  <p><strong>数据写入</strong></p>
  <form action="" method="post">
    <input name='"enable_cycle"' type="text" />
    <input name="" type="submit" value="开始使能" />
  </form>
</body>
</html>
  • 如下图:jquery-3.6.0.min.js是网上下载的jQuery文件,待会会详细讲到
  • 下载进PLC(这里不讲PLC web server的使用方法,需要请去查找资料),显示效果如图:

3. 中途遇到的问题汇总

  • 引入jQuery:
    • 网上引入jQuery用到的方法<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>,这里的src是网上的在线数据,但我们的IPC大概率是离线或者是局域网;如果本地使用,请先复制链接把它下载到本地,最好和html同一目录下使用。
  • 如果没有正确引入jQuery会发生什么事:
    • 为了测试,我把html页面的<script src="jquery-3.6.0.min.js"></script>删除了,再次下载进PLC,然后测试,页面本身没有问题,但是当点进控制台的时候,就看到了报错了:
    • $ is not define:ChatGPT告诉我通常意味着jQuery库文件没有正确加载。
    • 所以重新把jQuery库文件引用回来即可。
  • 如果不想从网上下载jQuery库,也不想使用在线的jQuery资源怎么办?
    • 随便找一个PLC的web页面,检查PLC的web页面,找到该页面用的jQuery文件,引用它的,白嫖PLC的jQuery资源.

标签:jQuery,自定义,html,PLC,刷新,data,页面
From: https://www.cnblogs.com/xiacuncun/p/18322698

相关文章

  • 【正在编辑中...】ENVI56扩展工具:添加自定义光谱指数——以NDWI和NDBSI为例
    本工具适用于ENVI5.6及以上版本(本人测试最低版本为5.6.3)。ENVI内置了上百种指数公式,但是大家在使用过程中肯定会有自定义指数的需求。在之前只能通过波段运算工具实现指数计算,现在可以通过本工具方便的添加自定义光谱指数,然后可以通过如下工具或API使用新指数:光谱指数工具:Too......
  • 自定义菜单未显示在 odoo 门户视图上
    我想在odoo门户视图上显示自定义菜单。XML文件:<?xmlversion="1.0"encoding="UTF-8"?><odoo><data><templateid="portal_my_home_loan"name="PartnerLoan"customize_show="True"inh......
  • vue 2 实现自定义组件一到多个v-model双向数据绑定的方法(转)
    原文链接:https://blog.csdn.net/Dobility/article/details/110147985前言有时候我们需要对一个组件绑定自定义v-model,以更方便地实现双向数据,例如自定义表单输入控件。甚至有时候,我们想要实现绑定多个“v-model”,也就是多个“双向绑定”,例如带表单输入的模块框,想同时控制模态......
  • 在 python requests modul 中,如何检查页面是否使用“POST”方法或“GET”方法
    如何使用python“requests”模块检查页面是否使用“GET”方法或“POST”方法。我期望输出为True或False,或者GET或Post预期代码:importrequestsurl=f"www.get_example.com"response=requests.get(url)ifresponse.check_get==True:print("get")你......
  • Flask-WTF:如何在 Flask FormField 中定义自定义变量
    我正在尝试在Flask中设置一个动态表单,其中该表单具有动态填充的FormFieldsFieldList。虽然大部分都有效,但我不断遇到每个FormField的变量问题。我需要每个FormField有一个标签,它是FormField的名称(并在页面上呈现)和一个在显示/隐藏脚本中使用的自定义ID,该脚本使用动态......
  • 用户登录后从个人资料和注销链接错误重定向到登录页面
    上下文我正在开发一个Django项目,在该项目中我使用配置文件和注销功能实现了用户身份验证。我遇到的问题是,当我尝试从导航栏访问个人资料或注销链接时,它会将我重定向到登录页面,而不是导航到用户的个人资料或执行注销。个人资料链接应该导航如果用户已登录......
  • 一文弄清楚自定义流程表单开发的多个优势特征
    随着行业竞争的激烈化,很多企业都希望实现降本、提质、增效的发展目的。什么样的软件平台可以帮助企业实现这一目标?低代码技术平台、自定义流程表单开发拥有可视化界面、易操作、更灵活等优势特点,在助力降本增效的过程中事半功倍,深得客户喜爱。要了解它的重要性,可以先学习它的定义......
  • SpringSecurity:hasAuthority与自定义权限校验
    springsecurity中有两种权限控制方法1.基于注解@PreAuthorize("hasAuthority('syst:add')")他的作用是在controller方法上进行权限校验,如果该用户具有对应的权限则放行,否则抛出AccessDeniedHandler,403(权限不足)2.基于配置//基于配置的权限控制http......
  • 在线客服系统二次开发:访客聊天前端页面删减部分功能【唯一客服】
    前端部分想要修改前端界面,删除某些功能,或修改某些文字,可以查看下面介绍我们的前端是传统的开发模式,不是node编译后部署形式,前端没有独立的项目所有展示的页面地址,都是后端的地址,后端把前端html模板页渲染出来展示渲染前端页面的原理Gin框架引入并渲染前端页面后,前端页面就是......
  • 25 Docker网络管理_自定义网络
     欢迎来到@一夜看尽长安花博客,您的点赞和收藏是我持续发文的动力对于文章中出现的任何错误请大家批评指出,一定及时修改。有任何想要讨论的问题可联系我:[email protected]。发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。​   专栏:java全栈C&C++Python......