2016-07-14 131 views
0

我有一个用Vanilla JavaScript编写的ajax请求,它从服务器获取JSON文件。但是这表现不佳。这里是我的代码:JSON请求缓慢的JavaScript性能

var data = { 
    "Description1": { 
    "key1": "Value 1 here", 
    "key2": "Value 2 here", 
    "key3": "Value 3 here" 
    }, 
    "Description2": { 
    "key1": "Value 1 here", 
    "key2": "Value 2 here", 
    "key3": "Value 3 here" 
    } 
} 

var table = document.querySelector('table'); 
var options = document.getElementById('option1Id'); 


var rows = ''; 
for (var p in data) { 
    for (var k in data[p]) { 
    if(options.selectedValue == 'Description1'){ 
    rows += '<tr><td>' + k + '</td><td>' + data[p][k] + '</td></tr>' 
    } 
    else if(options.selectedValue == 'Description2'){ 
    rows += '<tr><td>' + k + '</td><td>' + data[p][k] + '</td></tr>' 
    } 
    } 
} 
table.innerHTML = rows; 

HTML摘录:

<table></table> 
    <select id="dropdown" onchange="getJson()"> 
     <option value="description1">Description1</option> 
     <option value="description2">Description2</option> 
    </select> 

的JSON的填充表,每一次不同的选项,从下拉菜单中选择,从表中的数据发生变化。但是,这需要大约10秒或更长时间才能加载,并且JSON文件中的键/值对少于100个。有时它根本不会加载,有时,当我在下拉菜单中更改数值时,它会滞后。这很慢。我能做些什么来使代码更快?任何建议,使这个更好的表现将不胜感激。

+1

没有什么在那里应该引起性能问题,至少,给你描述的程度。您是否检查了网络请求完成需要多长时间? – Harangue

+0

使用数组&'.join('')'而不是连接会提高性能。 – SLaks

+0

您有一个XSS漏洞。 – SLaks

回答

0

尝试这样的事情

var rows=''; 
 
    d1=data.Description1 
 
    d2=data.Description2 
 
    for (var k in d1[p]) {   
 
     rows += '<tr><td>' + k + '</td><td>' + data[p][k] + '</td></tr>' 
 
     } 
 

 
    for (var k in d2[p]) {   
 
     rows += '<tr><td>' + k + '</td><td>' + data[p][k] + '</td></tr>' 
 
     } 
 

 
//multiple for combined with if statement affect the speed