2013-10-29 5 views
0

가 나는 DOM을 교체 할 필요가 자바 스크립트 내부 코드, 뭔가 작성하는 방법 :이 같은

$("#target").html('<?php echo $html?>'); 

$html 변수 내가 어떤 종류의 필요 물론

$html = '<div> 
    <input type="text" name="test" /> 
    </div>'; 

복잡한 마크 업을 수 또는 자바 스크립트 엔진은 첫 번째 crlf 또는 따옴표에서 구문 문제로 인해 중단됩니다. 레일에는 간단한 함수 escape_javascript이있어 매우 편리합니다. cakephp와 비슷한 것이 있습니까?

+0

가능한 중복 http://stackoverflow.com/questions/168214/pass-a-php-string-to-a-javascript -variable-and-escape-newlines) – ndm

답변

0

당신이 requestAction

를 사용하여이 작업을 수행 할 수 있습니다 보기 파일의

은 아래 코드를 추가합니다

$html = $this->requestAction('/tests/func_name'); 

echo $this->Html->scriptBlock(' 
    $("#target").html('. $this->Js->value($html) .'); 
'); 

그리고 TestsController에서.

public function func_name() { 
    $this->layout = 'layout_name'; // The layout you want here for design. 

    $this->render('/Elements/element_name'); // you can directly render the content of element by writing like this. 
} 
([자바 스크립트 변수에 PHP 문자열을 전달 (줄 바꿈을 탈출)]의
+0

좋은데,'$ this-> Js'를 사용할 수 없습니다 : 정의되지 않은 속성 View :: $ Js –

+0

js 헬퍼를 포함하지 않을 수도 있습니다. 컨트롤러와 appcontroller에서'$ helpers' 속성을 체크하고 그것을 포함 시키십시오. –

+0

작동합니다! JS와 자바 스크립트 도우미가 같은 것이라고 생각했지만 그렇지 않았습니다. –

1

나는

$("#target").html('<?php echo $this->element("element_path"); ?>'); 

더 의미가 있습니다 사용하여 생각합니다. 그러나 element_path.ctp 파일의 내용에 따라 다릅니다. 한편 이와 같이 대체 HTML을 사용하는 것은 약간 이상합니다. 특히 lott 인 경우에는 HTML을로드하고 Controller 함수에서 요소의 내용을 반환하도록 ajax 호출을 작성합니다.

$("#target").html('Loading...').load('/myController/loadHtml/'); 

과 MYCONTROLLER

function loadHtml(){ 
    $this->layout = false; 
} 

및 기능 응용 프로그램에 대한보기 /보기/내/load_html.ctp :

<?php echo $this->element("element_path"); ?> 
+0

문제는 동일합니다. 이스케이프 처리되지 않은 html을 반환합니다. –

+0

@VecchiaSpugna ['jQuery.html()'] (http://api.jquery.com/html/) 함수를 사용할 때 왜 HTML을 이스케이프하고 싶습니까? 그건 말이 안되요. 데이터를 텍스트로 표시하려면 대신 ['jQuery.text()'] (http://api.jquery.com/text/)를 사용하십시오. 그리고 HTML을 수동으로 벗어날 필요가있을 때 ['h()'] (http://book.cakephp.org/2.0/ko/core-libraries/global-constants-and-functions.html#h)를 확인하십시오.). – ndm

+0

Jquery.html() 인수가 crlf가 포함 된 텍스트 인 경우 자바 스크립트가 중단됩니다. –