jQuery Проблема получения HTML-переменной из PHP-скрипта - PullRequest
1 голос
/ 19 сентября 2011

Я генерирую кучу блоков редактирования tinymce, отправляя их содержимое в javascript через php.

Я делаю что-то вроде

<script>
addBox('<?$content?>');
</script>

Проблема в том, что каждый раз текстsent имеет символ "/", функция которого прервана и возвращает ошибку, например:

Uncaught SyntaxError: Unexpected token ILLEGAL

Я обнаружил, что она возвращает эту ошибку хотя бы с этим символом ... Не знаю, произойдет ли этос другими.Функция выдает ошибку при вызове как:

addBox("&lt;p&gt;Fundada em 2000 e inserida no &lt;strong&gt;Grupo CIL&lt;/strong&gt;, a CilNet &amp;eacute; uma empresa de Servi&amp;ccedil;os de Engenharia na &amp;aacute;rea das Tecnologias de Informa&amp;ccedil;&amp;atilde;o, com compet&amp;ecirc;ncias em Redes de Comunica&amp;ccedil;&amp;atilde;o de Dados, Voz e V&amp;iacute;deo.&lt;/p&gt;
&lt;p&gt;Tendo como base uma larga experi&amp;ecirc;ncia no mercado nacional, a CilNet assume-se como um parceiro tecnol&amp;oacute;gico no sector empresarial, com especializa&amp;ccedil;&amp;atilde;o em solu&amp;ccedil;&amp;otilde;es tecnol&amp;oacute;gicas pioneiras a n&amp;iacute;vel mundial.&amp;nbsp;&lt;/p&gt;");

Может кто-нибудь помочь?

Код для addBox выглядит следующим образом:

function addBox(text){
    elem = "txt" + window.counter;

    var tiny = $.ajax({
        type: "POST",
        url: "inc/ajax.php?act=inserebox",
        data: "value=txt" + window.counter + "&text="+encodeURIComponent(text),
        async: false
    }).responseText;

    $('.more_boxes').append(tiny);
    //$(tiny).append('.more_boxes');


    tinyMCE.init({
       url:'../js/tinymce/jscripts/tiny_mce/plugins/ibrowser',
       mode:"exact",
       elements: elem,
       theme:"advanced",
       height:"220",
       entity_encoding : "raw",
       plugins : "safari,pagebreak,style,table,advimage,advlink,emotions,iespell,media,searchreplace,print,contextmenu,paste,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,inlinepopups,ibrowser",
       theme_advanced_toolbar_location : "top",
       theme_advanced_toolbar_align : "left",
       theme_advanced_statusbar_location : "bottom",
       theme_advanced_resizing : false
    });
    window.counter+=1;

    return true;
}

1 Ответ

1 голос
/ 19 сентября 2011

Вы можете использовать встроенную в PHP addlashes для экранирования недопустимых символов до того, как они будут переданы в поле tinymce.Вам нужно будет сделать это с переменной $ content, прежде чем передавать ее в сценарий JS.

РЕДАКТИРОВАТЬ:

Попробуйте использовать комбинацию декодированного HTML и addSlashes, например:

<?php
    // Code to create $content var here //
    $content = addSlashes($content);
?>

<script>
    <![CDATA[
        addBox('<?php echo $content; ?>');
    ]]>
</script>

Если вы не заключите свой Javascript в <![CDATA[]]>, то при обнаружении угловых скобок вы получите ошибки, потому что это будет интерпретироваться как начало тега HTML.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...