Javascript 将ajax字符串数据转换为数组以更新绘图数据
我正在尝试使用Ajax请求动态更新jqplot图表。 我的服务器正在返回数据的字符串表示形式,如下所示: “[['果汁',30],'牛奶',30],'水',30]” 但是,我需要将这个字符串转换为数组数组。 这是更新数据的正确方法吗?如果是,转换字符串的最佳方法是什么Javascript 将ajax字符串数据转换为数组以更新绘图数据,javascript,ajax,playframework,jqplot,Javascript,Ajax,Playframework,Jqplot,我正在尝试使用Ajax请求动态更新jqplot图表。 我的服务器正在返回数据的字符串表示形式,如下所示: “[['果汁',30],'牛奶',30],'水',30]” 但是,我需要将这个字符串转换为数组数组。 这是更新数据的正确方法吗?如果是,转换字符串的最佳方法是什么 $.ajax({ url:'http://localhost', success:function(plotData){ var data = plotData.split(",")
$.ajax({
url:'http://localhost',
success:function(plotData){
var data = plotData.split(",");
if(plot){
plot.series[0].data = data;
plot.redraw();
}
},
fail:function(error){
alert('error:'+error);
}
});
此代码将转换为一维数组:
0:“[['Helpdesk'”
1: "30]"
2:“[‘用户’
3: "30]"
4:“[‘自动生成’”
5:“30]]”转换字符串时,u可能会使用此函数
var plotData = "[['Juice',30],['Milk',30],['Water',30]]";
function strToArr(str) {
//pattern that checks for '[', ']'
var patt=/[\[\]]/gi;
//we replace the pattern with '' symbol
var tmp = str.replace(patt,'').split(',');
var result = []
for (var i = 0; i < tmp.length; i+=2) {
//now all data is in one array, we have to putt in pairs
result[i] = [ tmp[i], tmp[i+1] ]
}
return result;
}
console.log( strToArr(plotData) );
var plotData=“[['Juice',30],'Milk',30],'Water',30]”;
功能strtarr(str){
//检查“[”,“]”的模式
var patt=/[\[\]]/gi;
//我们将模式替换为“”符号
var tmp=str.replace(patt,,).split(,);
var结果=[]
对于(变量i=0;i
您可以使用eval(“var x=“+plotData)
作为替代解决方案。数量很少,请在使用前仔细检查一下 正确格式化数据
看起来您从服务器得到的响应应该是JSON。但是,它不是有效的json,因此表示为字符串
所需的更改非常简单,这是无效的json:
[['Juice',30],['Milk',30],['Water',30]]
[["Juice",30],["Milk",30],["Water",30]]
这是有效的json:
[['Juice',30],['Milk',30],['Water',30]]
[["Juice",30],["Milk",30],["Water",30]]
唯一的区别是引号。更改响应字符串可能(取决于您在服务器端执行的操作)会立即进行更正,使plotData
已经是一个由3个数组组成的数组
返回正确的内容类型
如果您尚未使用正确的http头提供响应—请确保响应作为application/json
提供,这当然是对有效json字符串的补充
强制解释为json
要强制jQuery尝试将响应解析为json,可以显式设置dataType
:
$.ajax({
...
dataType: 'JSON'
...
});
我不记得这有多严格,在没有服务器端修改的情况下可以工作
使用JSON.parse
或者,如果您只想按原样处理字符串;您可以使用:
结果将是一个包含3个数组的数组。尝试
eval(“var x=“+plotData”)
Arun,您的建议非常有效。你能提供一个答案而不是评论,这样我就可以接受了。-1建议使用eval-甚至你链接到的问题都说“甚至没有必要使用eval()解析JSON”。问题中的“ajax字符串”是一个格式错误的json响应,或者可以很容易地转换为有效的json字符串并进行适当的处理,这一点或多或少是清楚的。