CKEDITOR – predani parametru pomoci AJAXU

Piticu
Člen | 93
+
0
-

Ahoj vsem,

pouzivam CKEditor k uprave HTML sablone a porad mi nemuzu ty data posilat do Presenteru abych je mohl ulozit do databaze. Mam nalsedujici kody

show.latte

    // <![CDATA[
    function ClickToSave () {
            var data = CKEDITOR.instances.headerText.getData();
            $.ajax({
                url: $(this).data("link"),
                type: "POST",
                data: {'content': data}
            });
    }
    // ]]>

<button onclick='ClickToSave()' data-link="{link rest!}">Save</button>
{foreach $parts as $part}
    {$part->code|noescape}
    {/foreach}

$parts obsahuje casti sablony a potreboval jsme noescape aby se mi sablona vykreslila
V $parts existuje

<div contenteditable="true" id="headerText" class="header" >......</div>
**TemplatePresenter**
    public function handleRest() {

        echo "Do something";
        //jak dostat $_POST['content'] ??
    }

\--

Hlavni problem je v tom ze to nedela nic. Podle TracyBar, kde mi vyskoci neco ohledne AJAXU, predpokladam ze se pozadavek posilal, ale v tom handleReset se nic nedeje. ZKusil jsem echo, die(), cokoliv.

Nemam vubec zkusenosti s Ajaxem a jediny co potrebuji je dostat zmeny, ktere se provedou pomoci CKEditor do databaze:

<div contenteditable="true" id="headerText" class="header" >Novy obsah</div>

Mark53CZ
Člen | 7
+
0
-

Zkusil bych to přepsat na:

     // <![CDATA[
    function ClickToSave () {
            var data = CKEDITOR.instances.headerText.getData();
            $.nette.ajax({
                url: {link rest!},
                type: "POST",
                data: {'content': data}
            });
    }
    // ]]>

<button onclick='ClickToSave()'>Save</button>
{foreach $parts as $part}
    {$part->code|noescape}
    {/foreach}

A handle potom na:

public function handleRest($data) {

       echo "Do something";
       //Post budeš mít snad v $data
   }

Editoval Mark53CZ (8. 8. 2017 17:12)

Piticu
Člen | 93
+
0
-

Problem je v tom ze zadny echo mi nevypise :/ Nereaguje to :/
Mam pridani Jquery a nette.ajax.js

<script src="{$basePath}/ckeditor/ckeditor.js"></script>
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://code.jquery.com/jquery.js"></script>
<!-- jQuery UI -->
<script src="https://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<script src="{$basePath}/js/nette.ajax.js"></script>

Mark53CZ napsal(a):

Zkusil bych to přepsat na:

     // <![CDATA[
    function ClickToSave () {
            var data = CKEDITOR.instances.headerText.getData();
            $.nette.ajax({
                url: {link rest!},
                type: "POST",
                data: {'content': data}
            });
    }
    // ]]>

<button onclick='ClickToSave()'>Save</button>
{foreach $parts as $part}
    {$part->code|noescape}
    {/foreach}

A handle potom na:

public function handleRest($data) {

       echo "Do something";
       //Post budeš mít snad v $data
   }

Editoval Piticu (8. 8. 2017 17:25)

Mark53CZ
Člen | 7
+
0
-

Nepoužívej echo ale spíš klasicky.

Debugger::barDump($data); //dumpne ti to do tracy

Případně mě ještě napadá, máš linknutý nette.ajax.js?

Piticu
Člen | 93
+
0
-

Nikdy jsem ajax nette nepouzil.
Pridal jsem teda ty skripty jak jsem to uvedl vyse a pak mam tohle:

// <![CDATA[
function ClickToSave () {
    $(function () {
        $.nette.init();
    });
    var data = CKEDITOR.instances.headerText.getData();
    $.nette.ajax({
        url: {link rest!},
        type: "POST",
        data: {'content': data}
    });
}
// ]]>

V consoli dostavam error:

Uncaught TypeError: Cannot read property 'init' of undefined
    at HTMLDocument.<anonymous>

Mark53CZ napsal(a):

Nepoužívej echo ale spíš klasicky.

Debugger::barDump($data); //dumpne ti to do tracy

Případně mě ještě napadá, máš linknutý nette.ajax.js?

Mark53CZ
Člen | 7
+
0
-

Já tu inicializaci dávám na konec layoutu před </body>

<script>
$(function () {
    $.nette.init();
});
</script>

Zkus jí dát mimo tu funkci takhle nakonec a to je asi jedinné co mě teď napadá proč by tam mohla být ta js chyba

Piticu
Člen | 93
+
0
-

Porad nic :/ Dal jsem to pred

</body>

a porad nic