[js, php] GET na POST z JS w PHP

0

Przerabiam (lub dostosowuję do swoich potrzeb) darmowy edytor WYSIWYG - http://freerichtexteditor.com/about
Strona po edycja zwracana jest przez GET do przeglądarki, a ja chciałbym uzyskać kod strony w POST-ie (jeśli dobrze pamiętam to jest ograniczenie na długość w GET no i ze względów estetycznych wolałbym to w POST-ie.
Kod php uruchamiający skrypt wygląda następująco (oryginalny przykład do programu)

<?php
function freeRTE_Preload($content) {
	// Strip newline characters.
	$content = str_replace(chr(10), " ", $content);
	$content = str_replace(chr(13), " ", $content);
	// Replace single quotes.
	$content = str_replace(chr(145), chr(39), $content);
	$content = str_replace(chr(146), chr(39), $content);
	// Return the result.
	return $content;
}
// Send the preloaded content to the function.
$content = freeRTE_Preload("<i>This is some <b><br>preloaded</b> content</i>")

?>
<form method="get">
<!-- Include the Free Rich Text Editor Runtime -->
<script src="../js/richtext.js" type="text/javascript" language="javascript"></script>
<!-- Include the Free Rich Text Editor Variables Page -->
<script src="../js/config.js" type="text/javascript" language="javascript"></script>
<!-- Initialise the editor -->
<script>
initRTE('<?= $content ?>', 'example.css');
</script>
<input type="submit">
</form>

Próbowałem przechwycić '$content' ale wyświetla za każdym razem jedynie 'This is some preloaded content'.
W tym edytorze można podglądać kod html który następnie jest wysyłany przez get-a. Nie wiem jednak jak odnieść się do js z poziomu php. Trzeba napisać jakąś funkcję która zwróci to co chcę czy jest jakiś prostszy sposób? Próbowałem już zmieniać get na post, dodawać value do submit itd. ale dalej albo nic nie otrzymuje albo ten przykładowy tekst...
Kodu dla JS już nie wkleję bo jest za długi. Znalazłem taki kod do które odwołuje się program żeby wyświetlić podgląd kodu html tworzonej strony:
if (id == "rte_code_mode") { rteFormHandler(); document.getElementById(rteFormName).value = getXHTML(trim(document.getElementById(rteName).contentWindow.document.body.innerHTML)); document.getElementById("tb1").style.display = "none"; document.getElementById("tb2").style.display = "none"; document.getElementById("tb3").style.display = "none"; document.getElementById(rteFormName).style.display = ""; document.getElementById(rteName).style.display = "none"; document.getElementById("preview_" + rteName).style.display = "none";}
Czy mógłbym prosić o pomoc jak z tego wyciągnąć ten kod i przesłać POST-em?

wklejam jeszcze kawałek kodu który jest chyba wywoływany przy naciśnięciu submit, kiedy przesyłany jest kod strony

function startRTE(rtePreloadContent) { rteCSS = document.getElementById("preview_css").value; var kids = document.getElementsByTagName("FORM"); for (var i=0; i < kids.length; i++) { kids[i].onsubmit = rteFormHandler;}
document.getElementById(rteName).contentWindow.document.designMode = "on"; document.getElementById(rteFormName).value = rtePreloadContent; document.getElementById(rteName).contentWindow.document.open(); document.getElementById(rteName).contentWindow.document.write("<html><head><style type=\"text/css\">@import url("+rteCSS+");</style></head><body>" + rtePreloadContent + "</body></html>"); document.getElementById(rteName).contentWindow.document.close(); if (document.all && !window.opera) { document.getElementById(rteName).contentWindow.document.attachEvent("onkeypress", rteSelection); document.getElementById(rteName).contentWindow.document.attachEvent("onclick", rteSelection); document.getElementById(rteName).contentWindow.document.attachEvent("onmouseup", rteSelection);} else { document.getElementById(rteName).contentWindow.document.execCommand("useCSS", false, null); document.getElementById(rteName).contentWindow.document.addEventListener("keypress", rteSelection, true); document.getElementById(rteName).contentWindow.document.addEventListener("click", rteSelection, true); document.getElementById(rteName).contentWindow.document.addEventListener("mouseup", rteSelection, true);}
rteSelection(); var kids = document.getElementsByTagName("DIV"); for (var i=0; i < kids.length; i++) { if(kids[i].className == "rtebtn6"){ kids[i].onmouseover = rteBtnMouseOverBottom; kids[i].onmouseout = rteBtnMouseOutBottom; kids[i].onmousedown = rteBtnMouseDownBottom; kids[i].onmouseup = rteBtnMouseUpBottom;}
}
}
0

Patrzyłem na demo na ich stronie, wysyła POSTem (możliwe że coś przekombinowałeś w ustawieniach). Poza tym teraz co do możliwości edycyjnych roxuje TinyMCE ( http://tinymce.moxiecode.com/ )

Nie wiem jednak jak odnieść się do js z poziomu php.

PHP, a JS to dwa różne języki. Ten pierwszy jest server-side'owy, a drugi client-sideowy. Nie możesz nijak wpływać z JS na to co robi skrypt PHP, ani odwrotnie.

0

w ustawieniach nic nie zmieniałem. wcześniej patrzyłem TinyMCE ale nie pasował mi ze względu na 'brak' konfiguracji jak mi się wydawało. Chodzi mi o możliwość wybrania tylko tych kontrolek edycji tekstu które mnie interesują a inne wywalić. w programie który podałem jest banalnie prosta konfiguracja do tego, a teraz patrze ze może i w tinymce da się to zrobić.
na stronie tego programu w demie niby jest post ale dane są wyświetlane w javascript
getXHTML(trim(document.getElementById(rteFormName).value))
czy można w jakiś sposób przypisać to co tu wyskoczy do zmiennej z php?

0

Nie rozumiem o jakie przypisania ci chodzi, kombinujesz z tym PHP. PHP po prostu dostaje tablicami $_GET to co dostało metodą GET w URLu, a metodą $_POST to co zostało wysłane formularzem. Przecież to nie skrypt serwerowy narzuca jakie dane mają być wysłane, możesz się odnieść z poziomu skryptu serwerowego tylko do tego co zostało wysłane. Ogólnie jak są takie problemy z tym, że standardowo edytor przesyła dane GETem (oO) to zostaje wywalić go do śmietnika.

Co do funkcjonalności TinyMCE to tylko ślepy by tego nie znalazł.
user image

1 użytkowników online, w tym zalogowanych: 0, gości: 1