如何从来自 ajax 调用的 JSON 数据生成修改后的有效 JSON 数据字符串。有必要使用 dataFilter 来做到这一点。
来自ajax调用的retData(返回的数据)是:
{"8":"vacation","7":"birthday","5":"summer","4":"2013","3":"2014","6":"winter","2":"2015","1":"2016"}
Run Code Online (Sandbox Code Playgroud)
JS代码:
'dataFilter': function (retData, json) {
console.log('retData='+retData);
data = [];
$.map(retData, function (value,key) {
console.log('indx=i'+key+', value='+value);
node = {
'id' : 'i'+key,
'text' : value,
'icon' : '/',
'data' : value, //'metadata' : value,
'state' : {'opened' : false},
'children' : true
}
data.push( node );
});
console.log('final-data='+data);
return data;
//return JSON.stringify(data);
}
Run Code Online (Sandbox Code Playgroud)
但相反,我在浏览器控制台中收到错误:似乎 $.map 在“dataFilter”中运行时出现问题,它在“success”调用中运行良好(但插件严格希望在“dataFilter”中完成处理)
TypeError: invalid 'in' operand a
https://www.localhost.com/jscript/jquery/jquery-2.2.0.min.js
Line 2
Run Code Online (Sandbox Code Playgroud) 我在脚本中做了一些时间戳打印,这篇文章花了太长时间:差不多5分钟就完成了...... !!!
fyi,strArr数组包含大约1500个字符串元素.(这个循环多次运行)
文件tmp_FH_SR是27Mb和300,000行数据.文件tmp_FH_RL为13 Mb,包含大约150,000行数据.
我更改了变量名称以保护实际名称......
在第一个while循环中,基于$ str仅在文件中找到一次的事实,我从匹配记录中获取另一个字段.我使用此字段在另一个文件中搜索此字段的出现次数.根据该输出,我将$ str添加到一个数组.
my $tmp_srt;
foreach my $str (@strArr)
{
my $tmp1;
my $count=0;
seek $tmp_FH_SR,0,0;
while (<$tmp_FH_SR>)
{
my $line=$_;chomp($line);
if ($line=~ m/\"$str\"/)
{
$count++;
if ($count == 1)
{
my @tmp_line_ar = split(/\,/,$line);
$tmp_str=$tmp_line_ar[10];
}
}
}
if ($count == 1)
{
my $k;
seek $tmp_FH_RL,0,0;
while (<$tmp_FH_RL>)
{
my $line=$_;chomp($line);
if ($line=~m/\"$tmp_str\"/) {$k++;}
}
if($k == 1){push(@another_str_arr,$str);}
}
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能让它更快?一次读取阵列中的27mb和13mb文件并工作?我想避免这种情况,因为许多其他进程正在运行它的主机上运行.
TY.
HTML:
....<span id="elem_id0" style="....color:blue...">some text</span>
....<span id="elem_id1" style="....color:blue...">some text</span>
....<span id="elem_id2" style="....color:black...">some different text</span>
....<span id="elem_id3" style="....color:blue...">some text</span>
...
Run Code Online (Sandbox Code Playgroud)
我正在使用javascript动态更改颜色.根据这一切,我想要计算所有元素,其id以elem_id开头",颜色为"蓝色".
我正在努力追随.(尝试了很多变化).总计正确,但蓝计数总是来0.不知道为什么....
var blues = $('#[id^="elem_id"][font-color="blue"]').length;
var total = $('#[id^="elem_id"]').length;
Run Code Online (Sandbox Code Playgroud)
Pl建议.
****更新*******
删除了以前的更新.失败是由于添加attr时的拼写错误(在颜色之前添加了空格).匹配时失败(这里没有空格......).
我现在纠正了我的错误.
对所有人来说.
以下代码始终给出错误结果.我想我正在比较两个数字变量.那不是这样吗?
var request; var getfilesize; var maxdisplaysize=2097152;
request = $.ajax({
type: "HEAD",
url: getfile,
success: function () {
getfilesize = request.getResponseHeader("Content-Length");
console.log("Size is" + getfilesize+'xxx');
}
});
parseInt( getfilesize, 10 );
if ( getfilesize < maxdisplaysize ) {
$("#displayfile").load(getfile);
console.log('file size less then 2mb 2097152bytes');
} else {
$("#displayfile").append('<p>sorry large file<p>');
}
Run Code Online (Sandbox Code Playgroud)
Pl建议为什么if条件总是被评估为假?