jQuery解析字符串数据

时间:2013-03-14 22:32:49

标签: jquery json html-parsing

我的模拟结果是从包含字符串和数值的REST服务获得的。我能够解析数字(x_water),但是对字符串(x_date)有困难。下面是我的方法,我想我可能错误地使用HTML5 data-val属性来存储字符串。那么有人能给我一些建议吗?

我的数据如下所示

x_water

[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 22.1, 0.0545, 0.000171, 3.71e-05, 3.61e-05, 3.54e-05, 3.48e-05, 3.42e-05, 3.35e-05, 3.3e-05, 3.24e-05, 3.18e-05, 3.12e-05, 3.06e-05, 3.01e-05, 2.95e-05, 2.9e-05, 2.85e-05, 2.79e-05, 2.74e-05, 2.69e-05, 2.64e-05, 2.59e-05, 2.54e-05, 2.5e-05, 2.45e-05, 2.41e-05, 2.36e-05, 2.32e-05, 2.28e-05, 2.23e-05, 2.19e-05]

x_date

[' 1/ 1/1961', ' 1/ 2/1961', ' 1/ 3/1961', ' 1/ 4/1961', ' 1/ 5/1961', ' 1/ 6/1961', ' 1/ 7/1961', ' 1/ 8/1961', ' 1/ 9/1961', ' 1/10/1961', ' 1/11/1961', ' 1/12/1961', ' 1/13/1961', ' 1/14/1961', ' 1/15/1961', ' 1/16/1961', ' 1/17/1961', ' 1/18/1961', ' 1/19/1961', ' 1/20/1961', ' 1/21/1961', ' 1/22/1961', ' 1/23/1961', ' 1/24/1961', ' 1/25/1961', ' 1/26/1961', ' 1/27/1961', ' 1/28/1961', ' 1/29/1961', ' 1/30/1961', ' 1/31/1961', ' 2/ 1/1961', ' 2/ 2/1961', ' 2/ 3/1961', ' 2/ 4/1961', ' 2/ 5/1961', ' 2/ 6/1961', ' 2/ 7/1961', ' 2/ 8/1961', ' 2/ 9/1961', ' 2/10/1961', ' 2/11/1961', ' 2/12/1961']

在python中,我把它们放在一个隐藏的html表中,如下所示:

html = html + """
<table class="results" width="550" border="1">
                  <tr>
                    <th scope="col" colspan="3"><div align="center">Results</div></th>
                  </tr>
                  <tr style="display: none">
                    <td id="x_water" data-val='%s'></td>
                    <td id="x_date" data-val='%s'></td>
                  </tr>
</table><br>"""%(x_water,x_date)  

最后一步是使用jQuery来获取这两个变量:

    var x_water = $.parseJSON($('#x_water').attr('data-val'));
    var x_date = $.parseJSON($('#x_date').attr('data-val'));

我检查了生成的html文件的来源:

<td id="x_water" data-val='[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 22.1, 0.0545, 0.000171, 3.71e-05, 3.61e-05, 3.54e-05, 3.48e-05, 3.42e-05, 3.35e-05, 3.3e-05, 3.24e-05, 3.18e-05, 3.12e-05, 3.06e-05, 3.01e-05, 2.95e-05, 2.9e-05, 2.85e-05, 2.79e-05, 2.74e-05, 2.69e-05, 2.64e-05, 2.59e-05, 2.54e-05, 2.5e-05, 2.45e-05, 2.41e-05, 2.36e-05, 2.32e-05, 2.28e-05, 2.23e-05, 2.19e-05]'></td>
<td id="x_date" data-val='[' 1/ 1/1961', ' 1/ 2/1961', ' 1/ 3/1961', ' 1/ 4/1961', ' 1/ 5/1961', ' 1/ 6/1961', ' 1/ 7/1961', ' 1/ 8/1961', ' 1/ 9/1961', ' 1/10/1961', ' 1/11/1961', ' 1/12/1961', ' 1/13/1961', ' 1/14/1961', ' 1/15/1961', ' 1/16/1961', ' 1/17/1961', ' 1/18/1961', ' 1/19/1961', ' 1/20/1961', ' 1/21/1961', ' 1/22/1961', ' 1/23/1961', ' 1/24/1961', ' 1/25/1961', ' 1/26/1961', ' 1/27/1961', ' 1/28/1961', ' 1/29/1961', ' 1/30/1961', ' 1/31/1961', ' 2/ 1/1961', ' 2/ 2/1961', ' 2/ 3/1961', ' 2/ 4/1961', ' 2/ 5/1961', ' 2/ 6/1961', ' 2/ 7/1961', ' 2/ 8/1961', ' 2/ 9/1961', ' 2/10/1961', ' 2/11/1961', ' 2/12/1961']'></td> 

我的Chrome JS控制台没什么帮助,只是抱怨:

Uncaught SyntaxError: Unexpected end of input 

2 个答案:

答案 0 :(得分:1)

您的报价未正确转义。 查看此页面

How to properly escape quotes inside html attributes?

这里还有一个正确使用的小提琴

http://jsfiddle.net/earlonrails/LUDh8/3/

<td id="x_water" data-val='[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 22.1, 0.0545, 0.000171, 3.71e-05, 3.61e-05, 3.54e-05, 3.48e-05, 3.42e-05, 3.35e-05, 3.3e-05, 3.24e-05, 3.18e-05, 3.12e-05, 3.06e-05, 3.01e-05, 2.95e-05, 2.9e-05, 2.85e-05, 2.79e-05, 2.74e-05, 2.69e-05, 2.64e-05, 2.59e-05, 2.54e-05, 2.5e-05, 2.45e-05, 2.41e-05, 2.36e-05, 2.32e-05, 2.28e-05, 2.23e-05, 2.19e-05]'></td>
<td id="x_date" data-val="[ &quot;1/ 1/1961&quot;, &quot; 1/ 2/1961&quot;, &quot; 1/ 3/1961&quot;, &quot; 1/ 4/1961&quot;, &quot; 1/ 5/1961&quot;, &quot; 1/ 6/1961&quot;, &quot; 1/ 7/1961&quot;, &quot; 1/ 8/1961&quot;, &quot; 1/ 9/1961&quot;, &quot; 1/10/1961&quot;, &quot; 1/11/1961&quot;, &quot; 1/12/1961&quot;, &quot; 1/13/1961&quot;, &quot; 1/14/1961&quot;, &quot; 1/15/1961&quot;, &quot; 1/16/1961&quot;, &quot; 1/17/1961&quot;, &quot; 1/18/1961&quot;, &quot; 1/19/1961&quot;, &quot; 1/20/1961&quot;, &quot; 1/21/1961&quot;, &quot; 1/22/1961&quot;, &quot; 1/23/1961&quot;, &quot; 1/24/1961&quot;, &quot; 1/25/1961&quot;, &quot; 1/26/1961&quot;, &quot; 1/27/1961&quot;, &quot; 1/28/1961&quot;, &quot; 1/29/1961&quot;, &quot; 1/30/1961&quot;, &quot; 1/31/1961&quot;, &quot; 2/ 1/1961&quot;, &quot; 2/ 2/1961&quot;, &quot; 2/ 3/1961&quot;, &quot; 2/ 4/1961&quot;, &quot; 2/ 5/1961&quot;, &quot; 2/ 6/1961&quot;, &quot; 2/ 7/1961&quot;, &quot; 2/ 8/1961&quot;, &quot; 2/ 9/1961&quot;, &quot; 2/10/1961&quot;, &quot; 2/11/1961&quot;, &quot; 2/12/1961&quot;]"></td> 

答案 1 :(得分:0)

如果您在页面加载时知道数据,我建议您直接在javascript中将其作为对象字面输出:

html = html + """
<script type="javascript">
var x_water = %s;
var x_date = %s;
</script>"""%(x_water,x_date);