2017-01-26 22 views
4

我爲我的一個應用程序使用CF餅圖。但它工作怪異。以下代碼是圖表代碼,它提供了一個錯誤。它甚至不顯示圖表。我知道,這是由於查詢列col1的值存在雙引號。在SERIESLABEL或ITEMLABEL中存在單引號或雙引號給CFCHART中的錯誤

<cfoutput> 
    <script type="text/javascript"> 
     function Navigate(test){ 
      alert(test); 
     } 
    </script> 

<cfset testquery = queryNew("col1,Col2", "varchar,varchar") > 
<cfset queryAddRow(testquery, 1)> 
<cfset querySetCell(testquery, "col1", 'This is the "first" row') > 
<cfset querySetCell(testquery, "Col2", 5000) > 
<cfset queryAddRow(testquery, 1)> 
<cfset querySetCell(testquery, "col1", 'This is the second row') > 
<cfset querySetCell(testquery, "Col2", 2500) > 
<cfset queryAddRow(testquery, 1)> 
<cfset querySetCell(testquery, "col1", 'This is the third row') > 
<cfset querySetCell(testquery, "Col2", 8500) > 

    <CFCHART Format="Html" CHARTWIDTH="600" CHARTHEIGHT="650" TITLE="Pie Chart in CF11" URL="javascript:Navigate('$SERIESLABEL$')"> 
     <CFCHARTSERIES TYPE="pie" COLORLIST="##CA5940,##6FCF42,##4286CF" > 
     <CFLOOP FROM="1" TO="#testquery.RecordCount#" INDEx="i"> 
      <CFCHARTDATA ITEM="#testquery.col1[i]#" VALUE="#testquery.Col2[i]#"> 
     </CFLOOP> 
     </CFCHARTSERIES> 
    </CFCHART> 
</cfoutput> 

enter image description here

我檢查圖表的JSON在viewsource,它是好的。但代碼給出了上述錯誤。所以不知道它爲什麼給錯誤。沒有雙引號,代碼按預期工作,但我需要雙引號,它會影響應用程序,如果我刪除它。

我也嘗試將雙引號替換爲單引號,在這種情況下,圖表正在顯示,但如果我們單擊第一行區域,它會在控制檯中給出相同的錯誤。

enter image description here

因此,使用引號是主要的問題就在這裏。但我需要上面的代碼來顯示圖表,並在點擊該區域時,它應該顯示相應的標籤。

我不確定我錯過了什麼,或者代碼中有任何錯誤。

回答

4

您是否嘗試過在您的JSON字符串中引用引號?

喜歡本作例子:

<cfset querySetCell(testquery, "col1", 'This is the \"first\" row') > 

我創建的示例代碼梗概上trycf.com和它似乎工作

http://trycf.com/gist/e3321edb3481411078b75ad187cae52b/acf11?theme=monokai

我也試過了完全相同的代碼上我們的ColdFusion 11服務器之一,它也可以正常工作。那麼你是說你的示例代碼不工作,或者你說你的實際代碼仍然不工作?如果它是你的實際代碼,那麼你的例子中一定有其他的東西在播放。如果您的數據來自數據庫,那麼您需要確保這些字符在ColdFusion解析它時正確地轉義。

現在你看到了角色需要如何逃脫,你可以使用ScottJibben建議從評論中,只需撥打JSStringFormat()來爲你逃避這些角色。

<CFCHARTDATA ITEM="#JSStringFormat(testquery.col1[i])#" VALUE="#testquery.Col2[i]#"> 
+0

是的,我已經嘗試過,但沒有運氣。僅供參考:我正在使用cf11。 –

+0

當我在trycf.com上使用您的示例嘗試它時,它工作正常。我會爲答案添加一個要點。 –

+1

使用JSStringFormat()而不是手動轉義字符串會更簡單嗎? –

相關問題