Передать строку 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>
Другие вопросы по тегам