2017-01-26 20 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

Да, я пробовал, но не повезло. FYI: Я использую cf11. –

+0

Это сработало, когда я попробовал его на trycf.com, используя ваш образец. Я добавлю суть к ответу. –

+1

Не проще ли использовать JSStringFormat() вместо ручного экранирования строк? –

 Смежные вопросы

  • Нет связанных вопросов^_^