2013-03-14 82 views
1

我的仿真結果是從包含字符串和數值的REST服務獲取的。我能夠解析數字(x_water),但字符串有困難(x_date)。以下是我的方法,我想也許我錯誤地使用HTML5 data-val屬性來存儲字符串。那麼有誰能給我一些建議?jQuery解析字符串數據

我的數據看起來像下面

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 
+0

你或許應該通過有效的JSON到JSON解析的功能? – adeneo 2013-03-14 22:35:29

+0

你說得對。我需要先使用json.dump轉換x_date。 – 2013-03-15 03:33:33

回答

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> 
+0

感謝您的幫助。我使用json.dump來解決這個問題.... – 2013-03-15 15:23:30

+0

這就是爲什麼你得到錯誤,我相信它是正確的答案。 – earlonrails 2013-03-15 16:02:41

0

如果你知道在頁面加載時間的數據,我建議乾脆直接在JavaScript輸出作爲對象文本:

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

這種方法會減慢網頁速度嗎? – 2013-03-15 15:24:26