Передать строку JSON из ColdFusion в Javascript - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь передать сгенерированную 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 Ответ

0 голосов
/ 12 мая 2018

Пара вещей.

Чтобы вывести данные 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>
...