CKEDITOR – predani parametru pomoci AJAXU
- Piticu
- Člen | 93
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
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
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)
- Piticu
- Člen | 93
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?