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

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

Susan Sarandon
풀어 주다: 2024-12-25 16:33:20
원래의
333명이 탐색했습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿