Передать строку JSON из ColdFusion в Javascript
Я пытаюсь передать сгенерированную ColdFusion строку JSON в качестве параметра в функцию Javascript. Я получаю сообщение об ошибке "Uncaught SyntaxError: Invalid or неожиданный токен" из-за некоторой комбинации одинарных и двойных кавычек, которые просто не организованы правильно.
Вот пример кода:
<script>
function myJSFunction(z) {
console.log(z);
}
</script>
<cfset x = {"firstName"="Bob", "lastName"="Smith"} />
<cfdump var="#x#" />
<cfset y = serializeJSON(x) />
<cfdump var="#y#" />
<cfoutput>
<a href="javascript:myJSFunction('#y#');">Uncaught SyntaxError: Invalid or unexpected token</a><br/>
</cfoutput>
Я пытался поэкспериментировать с JSStringFormat, но это не помогло. Любые мысли или предложения о том, как передать строку JSON, будут полезны. Спасибо!
(Я работаю на Lucee 5.2.6.60.)
1 ответ
Пара вещей.
Чтобы вывести данные JSON или любой объект в консоль, вы должны записать этого плохого парня. Это можно сделать в JQuery с Stringify
,
Кроме того, для правильного вывода HTML потребовалось несколько раундов тестирования и настройки - по крайней мере, в Chrome. Гиперссылка серьезно не понравилась всем двойным кавычкам, и я не пытался избежать их. Я поменял его кнопкой и использовал вместо него onClick. Я получил следующий код для работы.
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js"></script>
<script>
function myJSFunction(z) {
console.log(JSON.stringify(z));
}
</script>
<cfset x = {"firstName"="Bob", "lastName"="Smith"} />
<cfdump var="#x#" />
<cfset y = serializeJSON(x) />
<cfdump var="#y#" />
<cfoutput>
<button onclick='myJSFunction(#y#);'>test</button><br/>
</cfoutput>