2013-04-17 3 views
0

ajax/jquery $ .post를 사용하여 mysql 데이터베이스에 내용이있는 페이지에 텍스트 영역이 있습니다. mysql 데이터는 PHP로 호출 된 다음 자바 스크립트로 새로운 동적 텍스트 영역으로 푸시됩니다.jquery ajax to mysql to javascript conversion

나는 DB에 넣기 전에 htmlentities()로 모든 HTML을 변환한다.

그런 다음 mysql_query를 실행하여 데이터를 드래그합니다. 이 시점에서 데이터를 에코하면 잘 돌아옵니다.

그런 다음 js 함수로 밀어 넣어 새 텍스트 영역을 만들고 여기에 데이터를 추가하면 오류가 발생합니다. 내가 mysql_query를 가지고있는 데이터에주의를 기울이려고한다면 나는 아무것도 얻지 못한다.

저는 Lorem Ipsum 텍스트를 사용하여 테스트하고 있습니다. 내가 불을 지르고를 실행하고 내가 오류가

[17:44:20.948] SyntaxError: unterminated string literal @ http://**************.com/********.php:427 

나는 많은이있는 한 사람이 그것을 필요로하지 않는 모든 코드를 게시 실 거예요하고 정직한 내가 탈출/HTML 인코딩 유형의 문제는 어떤 종류의 생각이 될 것입니다.

, 그것은 json_encode()에 대한 호출을 래핑하는 가장 안전 CTRL 'U'

<script>NewTextArea('1','draggable','176','672','300','300','&lt;strong&gt;Lorem Ipsum&lt;/strong&gt; es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno est&Atilde;&iexcl;ndar de las industrias desde el a&Atilde;&plusmn;o 1500, cuando un impresor (N. del 
T. persona que se dedica a la imprenta) desconocido us&Atilde;&sup3; una galer&Atilde;&shy;a de textos y los mezcl&Atilde;&sup3; de tal manera que logr&Atilde;&sup3; hacer un libro de textos especimen. No s&Atilde;&sup3;lo sobrevivi&Atilde;&sup3; 500 a&Atilde;&plusmn;os, sino que tambien ingres&Atilde;&sup3; como texto de relleno en documentos electr&Atilde;&sup3;nicos, quedando esencialmente igual al original. Fue popularizado en los 60s con la creaci&Atilde;&sup3;n de las hojas &quot;Letraset&quot;, las cuales contenian pasajes de Lorem Ipsum, y m&Atilde;&iexcl;s recientemente con software de autoedici&Atilde;&sup3;n, como por ejemplo Aldus PageMaker, el cual incluye versiones de Lorem Ipsum.');</script> 
+1

** 관련 ** 코드를 게시하십시오. – moonwave99

+2

_ 내가 db_로 밀어 넣기 전에 htmlentities()로 모든 HTML을 변환합니다.이 방법은 잘못된 방법입니다. HTML을 출력 할 때'htmlentities'를 사용해야합니다. 데이터베이스에 HTML이 있으면 HTML 전용 인코딩을 사용하여 데이터가 _poluted_임을 의미합니다. JavaScript로 출력하기 때문에'htmlentities'가 아닌'json_encode'를 사용해야합니다. – Halcyon

+0

@jeroen SyntaxError는 JavaScript로되어 있습니다. 파일 지시자를 보면'http'입니다. – Halcyon

답변

3

당신이 자바 스크립트로 PHP 변수를 주입하고 따라 위의 오류를 가져옵니다 마지막 JS 기능이 있습니다. Javascript에는 암묵적인 라인 끝이 있습니다. 즉, 문자열의 줄 바꿈을 이스케이프 처리해야합니다. 자바 스크립트 블록의 일부로 개행 문자가있는 PHP 문자열을 반향 시키면 스크립트가 중단됩니다.

+0

감사합니다. 방금 db에 추가 된 줄 바꿈이 표시되어 str_replace를 사용하여 '\ n'을 '
'으로 변환하고 이제 작동합니다. json_encode가 저장된 텍스트에 따옴표를 추가하는 이유는 무엇입니까? –

+0

@BarryWatts - json_encode는 본질적으로 무엇이든 해당 자바 스크립트 리터럴로 변환합니다. 즉, 문자열이 인용되고 이스케이프됩니다. –