以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  Echarts 匿名函数与数据刷新问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=174341)

--  作者:douglas738888
--  发布时间:2022/1/11 17:10:00
--  Echarts 匿名函数与数据刷新问题
例子采用,论坛中老师给出的echarts小例为参考
场景问题:用echarts做4个图表在4个盒子中,需要在js文件中用到匿名函数,避免数据污染,
在不使用异步加载$get调用json取值的情况下,怎样实现通过刷新数据从foxtable传值到js中

请蓝老师帮忙指点指点,谢谢。

参考小例的html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>ECharts</title>
    <!-- 引入 echarts.js -->
    <script src="../echarts.js"></script>
</head>
<body>
    <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
    <div id="main" style="width: 600px;height:400px;"></div>
    <script type="text/javascript">

(function () {    //加了立即执行函数,foxtable窗口的刷新数据代码不起作用,只有图表模板,无数据
        // 基于准备好的dom,初始化echarts实例
        var myChart = echarts.init(document.getElementById(\'main\'));

var data = [];  //应该是未传值进来

var option = {
    title: {
        text: \'动态数据 + 时间坐标轴\'
    },
    tooltip: {
        trigger: \'axis\',
        formatter: function (params) {
            params = params[0];
            //var date = new Date(params.name);
            return \'日期:\' + params.value[0] + \' 压力: \' + params.value[1] + " 质量:" + params.value[2];
        },
        axisPointer: {
            animation: false
        }
    },
    xAxis: {
        type: \'time\',
        splitLine: {
            show: false
        }
    },
    yAxis: {
        type: \'value\',
        boundaryGap: [0, \'100%\'],
        splitLine: {
            show: false
        }
    },
    series: [{
        name: \'模拟数据\',
        type: \'line\',
        showSymbol: false,
        hoverAnimation: false,
        data: data
    }]
};

setInterval(function () {
    myChart.setOption({
        series: [{
            data: data
        }]
    });
}, 2000);
        // 使用刚指定的配置项和数据显示图表。
        myChart.setOption(option);

})();

    </script>
</body>
</html>


foxtable button click刷新数据代码

Dim web = e.Form.Controls("WebBrowser1").BaseControl
Dim dt As DataTable = DataTables("数据表")
web.Document.InvokeScript("eval", new String() {"data=[]"}) \'清空数据

\'生成数据
For Each dr As DataRow In dt.Select("", "日期")
    Dim d As Date = dr("日期")
    web.Document.InvokeScript("eval", new String() {"data.push({name: \'" & dr("_Identify") & "\',value: [\'" & d & "\',Math.round(" & dr("压力") & "),\'" & dr("质量") & "\']});" })
Next

--  作者:有点蓝
--  发布时间:2022/1/11 17:20:00
--  
把数据转换为son保存到本地的一个文件文件里,然后js使用ajax获取本地的json文件使用
--  作者:douglas738888
--  发布时间:2022/1/11 17:57:00
--  
哦,还是要用ajax请求本地服务器才行,
我偷懒,尝试使用foxtable来启动本地服务器不行,还得安装http-server,并启动; (似乎,不使用本地服务器,ajax是无法获取json数据)
HttpServer.Prefixes.Add("http://127.0.0.1:5500/") 端口是被启用了,但html在浏览器打开用开发者功能,查看,jquery并未得到json
HttpServer.Start()

我另外的测试项目,在VSC中启动GoLive 开启5500是可通过ajax获得json,但是关闭VSC后,端口也不启用,foxtable打开的web也无法得到json
这种情况,应该怎样处理。

--  作者:有点蓝
--  发布时间:2022/1/11 20:22:00
--  
https://www.baidu.com/baidu?ie=UTF-8&word=ajax%20%E6%9C%AC%E6%9C%BA%E6%96%87%E4%BB%B6

看一看这个例子:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=103519&replyID=&skin=1