javascript-highcharts中为什么不能使用ajax传回来的数组? 求帮助 ,好几天解决不了

问题描述

highcharts中为什么不能使用ajax传回来的数组? 求帮助 ,好几天解决不了

$(function(){
var idaccount=window.parent.frames["upFrame"].idaccount;
var xmlhttp=new XMLHttpRequest();
//ajax返回值

    var arr;

    xmlhttp.open("GET","ajaxuserbloodpressure.php?idaccount="+idaccount,true);
        xmlhttp.send();

xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState== 4 && xmlhttp.status== 200 )
{

            arr=xmlhttp.responseText;
            var arr_obj=eval(arr); //ajax返回值变换为json数组对象,arr_obj这个时候为 //数组5,3,7
            var ceshi=[1,5,54];

$('#lineChart').highcharts({
chart: {
type: 'line' ,
zoomType: 'x'
},
title: {
text: '曲线'
},

yAxis: {
min: 0,
title: {
text: '值'
}
},

               plotOptions: {
                   column: {
                       pointPadding: 0.2,
                       borderWidth: 0
                   }
               },
               series: [{
                   name: '高',
                  data: [110,7,4]   //如果在这里用 arr_obj,就不能画图,如果用data:ceshi
                                                      //就可以画图
               }, {
                   name: '低',
                   data: [2,4,1]

               }]
           }); 

            }

        }

});

解决方案

将你的ajax改为同步的,而且你的arr_obj是内部变量,外部访问不了,直接使用arr变量就行了

 var xmlhttp=new XMLHttpRequest();
//ajax返回值
    var arr;
    xmlhttp.open("GET","ajaxuserbloodpressure.php?idaccount="+idaccount,false);///同步,不需要回调
        xmlhttp.send();
arr=xmlhttp.responseText;
arr=eval('('+arr+')')/////////
$('#lineChart').highcharts({ ///.....
series: [{
                   name: '高',
                  data:arr////////////////////
               }

解决方案二:

我的状态转换函数onreadystatechange里面包含$('#lineChart').highcharts({///// ,也就是异步回调之后才会作图,我可以把它调整到前面。如下
$(function(){

  var idaccount=window.parent.frames["upFrame"].idaccount;
   var xmlhttp=new XMLHttpRequest();
    var arr;

    xmlhttp.onreadystatechange=function(){
        if(xmlhttp.readyState== 4 && xmlhttp.status== 200 )
        {
            arr=xmlhttp.responseText;
            arr=eval('('+arr+')');

            var ceshi=[1,5,54];
            alert(arr);

            $('#lineChart').highcharts({
                chart: {
                    type: 'line' ,
                    zoomType: 'x'
                },
                title: {
                    text: '曲线'
                }, 

                yAxis: {
                    min: 0,
                    title: {
                        text: '值'
                    }
                }, 

                plotOptions: {
                    column: {
                        pointPadding: 0.2,
                        borderWidth: 0
                    }
                },
                series: [{
                    name: '高',
                    data: arr

                }, {
                    name: '低',
                    data: [2,4,1]

                }]
            }); 

            }

        }

    xmlhttp.open("GET","ajaxuserbloodpressure.php?idaccount="+idaccount,true);
        xmlhttp.send();

})

解决方案三:

我的状态转换函数onreadystatechange里面包含$('#lineChart').highcharts({///// ,也就是异步回调之后才会作图,我可以把它调整到前面。如下
$(function(){

  var idaccount=window.parent.frames["upFrame"].idaccount;
   var xmlhttp=new XMLHttpRequest();
    var arr;

    xmlhttp.onreadystatechange=function(){
        if(xmlhttp.readyState== 4 && xmlhttp.status== 200 )
        {
            arr=xmlhttp.responseText;
            arr=eval('('+arr+')');

            var ceshi=[1,5,54];
            alert(arr);

            $('#lineChart').highcharts({
                chart: {
                    type: 'line' ,
                    zoomType: 'x'
                },
                title: {
                    text: '曲线'
                }, 

                yAxis: {
                    min: 0,
                    title: {
                        text: '值'
                    }
                }, 

                plotOptions: {
                    column: {
                        pointPadding: 0.2,
                        borderWidth: 0
                    }
                },
                series: [{
                    name: '高',
                    data: arr

                }, {
                    name: '低',
                    data: [2,4,1]

                }]
            }); 

            }

        }

    xmlhttp.open("GET","ajaxuserbloodpressure.php?idaccount="+idaccount,true);
        xmlhttp.send();

})

时间: 2024-11-05 19:04:42

javascript-highcharts中为什么不能使用ajax传回来的数组? 求帮助 ,好几天解决不了的相关文章

用ajax如何实现将数组从后台传回jsp页面中供js使用,谢谢!

问题描述 例如后台有数组Stringarr[]=String["aa","bb"];Stringarr[]=String["aa","bb"]; 想传回jsp中供js使用:functioncheckCode(){//自动选中vart_arr=['aa','bb'];//后台传回来的数组varcheckboxes=document.getElementsByTagName("input");vart_str=

JavaScript学习总结之JS、AJAX应用_javascript技巧

1.AJAX 简介 AJAX(音译为:阿贾克斯) = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术,也就是在无需重新加载整个网页的情况下,能够更新部分网页的技术.AJAX 不是新的编程语言,而是一种使用现有标准的新方法,是一种用于创建快速动态网页的技术,通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新,传统的

【MVC】JavaScript代码中获取视图模型的数据

懂点MVC的人都知道MVC 的机制是访问Contoller下的Action,由Action组织好页面需要的数据然后返回视图(return View()/return PartialView())或数据(return Content("blah")/ return Json(-)),有的时候返回视图的同时连带返回数据以供页面使用(return View(model)).   其实Controller与View之间的传值有很多形式啦,除了传统的Retrun语句向页面返回数据,还可以通过 V

深入理解JavaScript编程中的同步与异步机制

  这篇文章主要介绍了深入理解JavaScript编程中的同步与异步机制,不仅仅是AJAX已经深入到了各个角落,Node.js的火爆也让JS的异步编程格外引人注目,需要的朋友可以参考下 JavaScript的优势之一是其如何处理异步代码.异步代码会被放入一个事件队列,等到所有其他代码执行后才进行,而不会阻塞线程.然而,对于初学者来说,书写异步代码可能会比较困难.而在这篇文章里,我将会消除你可能会有的任何困惑. 理解异步代码 JavaScript最基础的异步函数是setTimeout和setInt

.NET3.5和VS2008中的ASP.NET AJAX

在过去,我曾在<VS 2008 JavaScript Intellisense> 和 < VS 2008 JavaScript debugging> 中 讨论过JavaScript和AJAX方面的改进.下面是作为VS 2008和.NET 3.5一部分发布的一些ASP.NET AJAX运 行时特性的几个备注,以及你在VS 2008中打开现有ASP.NET AJAX 1.0项目时需要知道的几个重要事项. 包括在.NET 3.5中的ASP.NET AJAX ASP.NET AJAX 1.

Dojo前端开发中非常优秀的Ajax框架之一

在应用中我们可能会碰见这样的情况,我们需要在一个图表上展示包含多个维度的信息,随着维度的增加,我们会发现一般的图表无法充分和直观的展现这些信息.如企业经营状况各项指标数据的分析以及http://www.aliyun.com/zixun/aggregation/8172.html">用户行为各项特征的数据分析等.在最近的应用中我也遇到了这样的情况,经过分析发现,对于这类数据,使用蜘蛛图来展示能达到非常直观的效果.因为蜘蛛图能直观的展示数据的变动趋势和差异对比.在用来绘制蜘蛛图的第三方类库和框

使用HTML5中postMessage知识点解决Ajax中POST跨域问题_AJAX相关

由于同源策略的限制,Javascript存在跨域通信的问题,典型的跨域问题有iframe与父级的通信等.常规的几种解决方法: (1) document.domain+iframe: (2) 动态创建script: (3) iframe+location.hash: (4) flash. postMessage是HTML5为解决js跨域问题而引入的新的API,允许多个iframe/window跨域通信. HTML5中提供了在网页文档之间相互接收与发送信息的功能.使用这个功能,只要获取到网页所在窗口

Javascript vue.js表格分页,ajax异步加载数据_基础知识

分页一般和表格一起用,分页链接作为表格的一部分,将分页链接封装成一个独立的组件,然后作为子组件嵌入到表格组件中,这样比较合理. 效果: 代码: 1.注册一个组件 js Vue.component('pagination',{ template:'#paginationTpl', replace:true, props:['cur','all','pageNum'], methods:{ //页码点击事件 btnClick: function(index){ if(index != this.cu

深入理解JavaScript程序中内存泄漏_javascript技巧

垃圾回收解放了我们,它让我们可将精力集中在应用程序逻辑(而不是内存管理)上.但是,垃圾收集并不神奇.了解它的工作原理,以及如何使它保留本应在很久以前释放的内存,就可以实现更快更可靠的应用程序.在本文中,学习一种定位 JavaScript 应用程序中内存泄漏的系统方法.几种常见的泄漏模式,以及解决这些泄漏的适当方法. 一.简介 当处理 JavaScript 这样的脚本语言时,很容易忘记每个对象.类.字符串.数字和方法都需要分配和保留内存.语言和运行时的垃圾回收器隐藏了内存分配和释放的具体细节. 许