>웹 프론트엔드 >JS 튜토리얼 >Jinja가 렌더링한 JSON 데이터를 구문 분석할 때 JavaScript 구문 오류를 수정하는 방법은 무엇입니까?

Jinja가 렌더링한 JSON 데이터를 구문 분석할 때 JavaScript 구문 오류를 수정하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-25 16:33:20337검색

How to Fix JavaScript SyntaxErrors When Parsing Jinja-Rendered JSON Data?

Jinja 렌더링 데이터의 JavaScript SyntaxError

문제: JavaScript를 사용하는 Jinja HTML 템플릿에서 예상치 못한 '&'를 나타내는 SyntaxError가 발생했습니다. token.

원인: Flask의 Jinja 환경은 보안상의 이유로 HTML 템플릿에 렌더링된 데이터를 자동으로 이스케이프합니다. 이스케이프된 문자가 구문 분석을 방해하므로 JSON 개체를 JavaScript에 전달할 때 문제가 됩니다.

해결책: Flask의 tojson 필터 또는 마크업을 사용하여 데이터를 안전한 것으로 표시

하려면 이 문제를 해결하려면 Flask의 tojson 필터를 활용하세요. 이 필터는 데이터를 JSON으로 덤프하고 렌더링 시 안전하다고 표시합니다. JavaScript.

return render_template("template.html", data=tree|tojson)

대체 접근 방식:

  • 안전 필터(더 이상 사용되지 않음): 이 필터는 더 이상 사용되지 않지만 데이터를 다음과 같이 표시합니다. JSON 없이도 안전함 변환.
var data = {{ tree|safe }};
  • 마크업 래퍼: 렌더링하기 전에 마크업에서 JSON 문자열을 래핑하는 것은 안전 필터와 동일합니다.
return render_template("template.html", data=Markup(json.dumps(tree)))

직접 Python 데이터 사용법:

렌더링된 데이터가 JavaScript용이 아닌 경우 JSON 변환이나 필터를 사용하지 않고 Python 데이터를 직접 전달하는 것이 좋습니다.

return render_template("template.html", data=tree)

구현:

진자에서 템플릿:

var data = {{ data }};

for (i in obj) {
   document.write(obj[i].text + "<br />");
}

또는 JavaScript 구문 분석 없이 Jinja 데이터를 직접 활용할 수 있습니다.

{% for item in tree %}
    <li>{{ item }}</li>
{% endfor %}

위 내용은 Jinja가 렌더링한 JSON 데이터를 구문 분석할 때 JavaScript 구문 오류를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.