Bart123
12.05.2014, 19:40:30
Drodzy forumowicze.
Mam problem, który wygląda tak.
<?php
$xml=simplexml_load_file($_SERVER['DOCUMENT_ROOT'] . '/1/wp-content/flashxml/3d-carousel-menu-as3-fx/settings.xml');
$arr = $child->attributes();
echo '<div class="parental">';
foreach($xml->General_Properties as $parent) {
echo '<form action='' method='POST'>';
echo '<input class="parent" type="button" name="click1"
onClcick="foreach($parent->children() as $child) {
'.$arr["value"].'; } />';
echo "</form>";
}
echo '</div>';
?>
Najprawdopodobneiej problem jest z zapisem onclick ponieważ tam występuje echo w echo.
Czy mógłby mi ktoś wytłumaczyć, w jaki sposób to zapisać by działało?
Z góry dziękuję za każdą pomoc.
trueblue
12.05.2014, 19:59:19
Jaki efekt/kod chcesz uzyskać?
Bart123
12.05.2014, 20:57:51
Sytuacja jest taka: mam plik xml, którego konstrukcja wygląda tak
Rodzic
dziecko = wartość
dziecko = wartość
dziecko= wartość
Rodzić
dziecko = wartość
dziecko = wartość
dziecko= wartość
np.
General_properties
height=200
width=100
I udało mi się odczytać zawartość pliku i wyświetllić na stronie. Problem pojawił się wtedy, kiedy chciałem wyświetlić RODZICA (to się udało) jako przycisk formularza. I po kliknięciu przycisku rozwijają się jego "dzieci". Tak to umownie nazwijmy.
Taki właśnie efekt chcę uzyskać. Jeżeli to w ogóle możliwe.
Oczywiście bardzo łatwo jest to zrobić przy pomocy submita ale, wtedy po naciśnięciu przycisku cała strona się przeładowuje i tu jest niestety wał.
Nie chciałbym używać ajaxu czy javascripta bo się specjalnie na nich nie znam... stąd pomysł na onClick.
OTO JAK WYGLĄDAŁ DZIAŁAJĄCY KOD Z SUBMIT czyli z przeładowywaniem strony NIESTETY.
<?php
$xml=simplexml_load_file($_SERVER['DOCUMENT_ROOT'] . '/1/wp-content/flashxml/3d-carousel-menu-as3-fx/settings.xml');
echo '<div class="parental">';
foreach($xml->General_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='submit' name='click1' value='General'/>";
echo "</form>";
if (isset($_POST['click1']))
{
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName('');
echo ("<br>".$arr["value"]). "<br><br>";}
}}
echo '</div>';
echo '<div class="parental">';
foreach($xml->Colorbox_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='submit' name='click2' value='Colorbox'/>";
echo "</form>";
if (isset($_POST['click2']))
{
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName('');
echo ("<br>".$arr["value"]). "<br><br>";}
}}
echo '</div>';
echo '<div class="parental">';
foreach($xml->Thumbs_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='submit' name='click3' value='Thumbs'/>";
echo "</form>";
if (isset($_POST['click3']))
{
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName('');
echo ("<br>".$arr["value"]). "<br><br>";}
}}
echo '</div>';
echo '<div class="parental">';
foreach($xml->Reflection_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='submit' name='click4' value='Reflection'/>";
echo "</form>";
if (isset($_POST['click4']))
{
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName('');
echo ("<br>".$arr["value"]). "<br><br>";}
}}
echo '</div>';
echo '<div class="parental">';
foreach($xml->Roll_Over_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='submit' name='click5' value='Roll_Over'/>";
echo "</form>";
if (isset($_POST['click5']))
{
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName('');
echo ("<br>".$arr["value"]). "<br><br>";}
}}
echo '</div>';
echo '<div class="parental">';
foreach($xml->Tooltip_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='submit' name='click6' value='Tooltip'/>";
echo "</form>";
if (isset($_POST['click6']))
{
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName('');
echo ("<br>".$arr["value"]). "<br><br>";}
}}
echo '</div>';
echo '<div class="parental">';
foreach($xml->Background_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='submit' name='click7' value='Background'/>";
echo "</form>";
if (isset($_POST['click7']))
{
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName('');
echo ("<br>".$arr["value"]). "<br><br>";}
}}
echo '</div>';
echo '<div class="parental">';
foreach($xml->Shade_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='submit' name='click8' value='Shade'/>";
echo "</form>";
if (isset($_POST['click8']))
{
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName();
echo ("<br>".$arr["value"]). "<br><br>";}
}}
echo '</div>';
echo '<div class="parental">';
foreach($xml->Rotation_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='submit' name='click9' value='Rotation'/>";
echo "</form>";
if (isset($_POST['click9']))
{
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName();
echo ("<br>".$arr["value"]). "<br><br>";}
}}
echo '</div>';
?>
IProSoft
12.05.2014, 22:03:18
Używaj BBCODE bo nie da się tego czytać.
Załaduj
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo ("<br>".$arr["value"]). "<br><br>";}
do ukrytego div'a i dodaj sobie w input akcję onclick i funkcję w JS, która pokaże/ukryje ten div.
Bart123
13.05.2014, 11:53:00
Sorki:) To było wklejane z notatniika. Ja po prostu już znam te swoje kody na pamięć.
Następnym razem użyję jedit.
A mógłbym prosić o zapis tej funkcji w javie?
Z javy jestem cienasem. Przyznaję się bez bicia.
timon27
13.05.2014, 17:07:48
A po co ci w javie?
Chciałeś online. Nie chcesz przypadkiem w javascript?
Zamiast przepisywać to na inny język skorzystaj po prostu z ajax.
Bart123
13.05.2014, 17:40:38
Dobrze by było wiedzieć jak to zapisać w ajax - może jakiś przykład?
Pewnie dla Was to łatwiejsze niż dla mnie. Dopiero się wdrażam w ajax...
timon27
13.05.2014, 19:17:02
funkcja ajax:
function ajax(url,destination){
document.getElementById(destination).innerHTML='
<img src="wait.gif">';
var xmlhttp;
if (window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById(destination).innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
Co robi:
"wchodzi" na adres
url a następnie całość co zobaczy wczytuje do diva/spana o id
destinationczyli w twoim wypadku zamiast:
<input type=submit>
piszesz:
<button onclick='ajax("pokaz_dziecko.php","wynik")>
a guzik ten wykona skrypt
pokaz_dziecko.php i wyświetli zawartość w divie o id wynik
Reszta (podzielenie twojego skryptu na części) to już php
Bart123
15.05.2014, 19:26:49
Chyba sobie nie radzę.
Zrobiłem tak. To jest cała zawartość pliku xml.php
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"
type="text/javascript"></script>
function ajax(xml.php,wynik){
document.getElementById(wynik)';
var xmlhttp;
if (window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById(wynik);
}
}
xmlhttp.open("GET",xml.php,true);
xmlhttp.send();
</head>
<?php
$xml=simplexml_load_file($_SERVER['DOCUMENT_ROOT'] . '/1/wp-content/flashxml/3d-carousel-menu-as3-fx/settings.xml');
echo '<div class="parental">';
foreach($xml->General_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='button' onClick='ajax("xml.php.","wynik")' value='General'/>";
echo "</form>";
echo '<div id="wynik">';
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName();
echo ("<br>".$arr["value"]). "<br><br>";
}echo '</div>';}
echo '</div>';
?>
</html>
Co tu jest nie tak?
trueblue
15.05.2014, 19:44:27
function ajax(file,wynik){
xmlhttp.open("GET",file,true);
onClick='ajax("xml.php","wynik")'
W jQuery masz gotową funkcję do obsługi żądań ajax. Jeśli natomiast chcesz pozostawić swoją funkcję, a nie korzystasz gdzie indziej z jQuery, to niepotrzebnie ją załączasz.
Bart123
15.05.2014, 19:47:09
Słuchaj. Jeżeli mógłbym Cię prosić.
Mógłbyś zmienić tą funkcję którą wkleiłem - ten zaips na taki jak powinien być ?
Bo chyba nie bardzo zrozumiałem twoją radę...
trueblue
15.05.2014, 19:48:23
Popraw trzy powyższe błędy, do rady nie trzeba się stosować, aby skrypt działał.
Bart123
15.05.2014, 19:51:07
Ale przecież mój zapis tak właśnie wygląda?
Rozumiem że za file mam wstawić xml.php a za wynik id diva, który na potrzeby tej jawy nazwałem wynik.
Czy nie tak?
trueblue
15.05.2014, 19:53:00
Nie wygląda tak.
Zmień linijki w kodzie, na te które Ci podałem.
Bart123
15.05.2014, 19:54:17
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"
type="text/javascript"></script>
function ajax(xml.php,wynik){
document.getElementById(wynik)';
var xmlhttp;
if (window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById(wynik);
}
}
xmlhttp.open("GET",child.php,true);
xmlhttp.send();
</head>
<?php
$xml=simplexml_load_file($_SERVER['DOCUMENT_ROOT'] . '/1/wp-content/flashxml/3d-carousel-menu-as3-fx/settings.xml');
$xml = xml.php;
$wynik = wynik;
echo '<div class="parental">';
foreach($xml->General_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='button' onclick='ajax(".$xml.",".$wynik.")' value='General'/>";
echo "</form>";
echo '<div id="wynik">';
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName();
echo ("<br>".$arr["value"]). "<br><br>";
}echo '</div>';}
echo '</div>';
?>
</html>
Tak wygląda to co mam w tej chwili i nie wiem czy błąd nie tkwi w tym, że button wyswietlany jest w echu razem z funkcją ajax .
Jak wchodzę na stronę, zamiast przycisku widzę zapis funkcji ajax...
trueblue
15.05.2014, 19:56:57
function ajax(file,wynik){
xmlhttp.open("GET",file,true);
$xml = "xml.php";
$wynik = "wynik";
Bart123
15.05.2014, 19:59:07
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"
type="text/javascript"></script>
function ajax(file,wynik){
document.getElementById(wynik)';
var xmlhttp;
if (window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById(wynik);
}
}
xmlhttp.open("GET",file,true);
xmlhttp.send();
</head>
<?php
$xml=simplexml_load_file($_SERVER['DOCUMENT_ROOT'] . '/1/wp-content/flashxml/3d-carousel-menu-as3-fx/settings.xml');
$xml = xml.php;
$wynik = wynik;
echo '<div class="parental">';
foreach($xml->General_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='button' onclick='ajax(".$xml.",".$wynik.")' value='General'/>";
echo "</form>";
echo '<div id="wynik">';
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName();
echo ("<br>".$arr["value"]). "<br><br>";
}echo '</div>';}
echo '</div>';
?>
trueblue
15.05.2014, 20:00:02
A co z trzecią poprawką?
I kolejna:
onclick='ajax(\"".$xml."\",\"".$wynik."\")'
Bart123
15.05.2014, 20:06:30
Trzecia czyli to?
$xml = "xml.php";
$wynik = "wynik";
Mam tak zapisane. Zapis w onclick juz zmieniłem.
Cudzysłowia! Ok mam. Zobaczymy czy zadziała.
Żeby było jaśniej to wklejam to co wyświetla mi się na stronie
function ajax(file,wynik){ document.getElementById(wynik)'; var xmlhttp; if (window.XMLHttpRequest){ xmlhttp=new XMLHttpRequest(); }else{ xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function(){ if (xmlhttp.readyState==4 && xmlhttp.status==200){ document.getElementById(wynik); } } xmlhttp.open("GET",file,true); xmlhttp.send();
To zamiast przycisku - czyli prawdopodobnie zapis w echo przeszkadza, a już zmieniłem na taki jaki podałeś, czyli błąd nr. 4
trueblue
15.05.2014, 20:16:38
Funkcję ajax trzeba objąć w tagi <script>.
Bart123
15.05.2014, 20:20:22
Teraz nie ma nic. Ani przysku ani nic. Pusto, Mam tak:
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"
type="text/javascript"></script>
<script>
function ajax(file,wynik){
document.getElementById(wynik)';
var xmlhttp;
if (window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById(wynik);
}
}
xmlhttp.open("GET",file,true);
xmlhttp.send();
</script>
</head>
<?php
$xml=simplexml_load_file($_SERVER['DOCUMENT_ROOT'] . '/1/wp-content/flashxml/3d-carousel-menu-as3-fx/settings.xml');
$xml = "xml.php";
$wynik = "wynik";
echo '<div class="parental">';
foreach($xml->General_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='button' onclick='ajax(\"".$xml."\",\"".$wynik."\")' value='General'/>";
echo "</form>";
echo '<div id="wynik">';
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName();
echo ("<br>".$arr["value"]). "<br><br>";
}echo '</div>';}
echo '</div>';
?>
</html>
trueblue
15.05.2014, 20:23:29
document.getElementById(wynik).innerHTML=xmlhttp.responseText;
Bart123
15.05.2014, 20:28:17
<script>
function ajax(file,wynik){
document.getElementById(wynik).innerHTML=xmlhttp.responseText;
var xmlhttp;
if (window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById(wynik);
}
}
xmlhttp.open("GET",file,true);
xmlhttp.send();
</script>
Nadal pusto?
Mam nadzieję, że nie tylko mnie szlag trafia jak coś nie wychodzi?
trueblue
15.05.2014, 20:32:15
Pewnie, że pusto, bo należało zmienić linijkę w funkcji onreadystatechange.
Jeszcze musisz wziąć pod uwagę, że wywołując kod php ajaxem zwracasz go w takiej postaci jak przy inicjacji całości (czyli z formularzem).
Bart123
15.05.2014, 20:47:18
Jeżeli chodzi onreadystatechange to zdaje się zmienłem na prawidłowe. I dalej bez efektu

<script>
function ajax(file,wynik){
document.getElementById(wynik).innerHTML=xmlhttp.responseText;
var xmlhttp;
if (window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById(wynik).innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET",file,true);
xmlhttp.send();
</script>
Zdaje się, że się nie zrozumieliśmy. Bardzo dobrze, że z formularzem czyli w tym przypadku z przyciskiem, który ma wywoływać ajaxa. Tylko, że tego przycisku od momentu wprowadzenia ajaxa właśnie NIE MA.
trueblue
15.05.2014, 20:50:10
Skoro tam zmieniłeś, to wyrzuć tą linijkę na początku funkcji.
Uruchom narzędzie developerskie, w Chrome F12. Potem zakładka Console i zobacz czy są błędy przy uruchamianiu przyciskiem. Jeśli nie, to zakładka Network i zobacz czy żądanie idzie, i jaki jest jego wynik.
Bart123
15.05.2014, 21:39:19
Znalazłem błąd! Przycisk jest, ale nie wysyła żadnego żądania.
OTO ZWROT Z CONSOLI CHROMA:
Uncaught ReferenceError: ajax is not defined picturesadd.php:256
onclick
A OTO PLIK:
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"
type="text/javascript"></script>
<script>
function ajax(file,wynik){
var xmlhttp;
if (window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById(wynik).innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET",file,true);
xmlhttp.send();
</script>
</head>
<?php
$xml=simplexml_load_file($_SERVER['DOCUMENT_ROOT'] . '/1/wp-content/flashxml/3d-carousel-menu-as3-fx/settings.xml');
$ml = "xml.php";
$wynik = "wynik";
echo '<div class="parental">';
foreach($xml->General_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='button' onClick='ajax(\"".$ml."\",\"".$wynik."\")' name='click1' value='General'/>";
echo '<div id="wynik">';
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName();
echo ("<br>".$arr["value"]). "<br><br>";
}echo '</div>';}
echo "</form>";
echo '</div>';
?>
</html>
Pliik jest plikiem o nazwie xml.php includowanym w php do pliku picturesadd.php. Może tu jest błąd?
HELP!
Firefox również zwraca: AJAX IS NOT DEFINED!
Jak not defined skoro w obu plikach już umieściłem zapis z headera. Co za absurd.
Ja już się poddałem. Jeżeli nikt nie pomoże mi tego rozwiązać to efektu, jaki chciałem uzyskać - nie będzie. Trudno
trueblue
15.05.2014, 21:40:12
Nie zamknąłeś deklaracji funkcji ajax, brakuje }.
Bart123
15.05.2014, 22:56:04
Jasna cholera.
Już wiem o czym pisałeś wcześniej. Pokazuje się, tylko że pokazuje się jeszcze raz ten sam przycisk i dopero rezultat. A jak to zrobić, by po wciśnięciu przycisku GENERAL - POJAWIŁA SIĘ WYŁĄCZNIE ZAWARTOŚĆ diva o nazwe wskazanej w ajax. Już bez tego przycisku.
Co więcej - to działa tylko wtedy, kiedy wskazany w ajaksie div nie ma ustawionego display:none w zewnętrznym css.
A chodzi o to, żeby po wejściu na strone nie było go widać. Żeby on pokazywał się tylko wtedy, kiedy kliknę w przycisk formularza.
Pytanie zasadnicze : JAK PRZY POMOCY AJAXU BĄDŹ samego JAVASCRIPT ZMIENIĆ WARTOŚĆ DISPLAY dla Diva o nazwie wynik - W ZEWNĘTRZNYM PLIKU CSS.
Po wejściu na stronę div o nazwie WYNIK jest niewidoczny. Kiedy klikam na przycisk GENERAL - div o nazwie WYNIK się pokazuje. Ot cała filozofia. Tylko jak to zrobić?
Jeszcze raz cały kod tak dla przypomnienia jakby co::
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"
type="text/javascript"></script>
<script>
function ajax(file,wynik){
var xmlhttp;
if (window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById(wynik).innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET",file,true);
xmlhttp.send();
}
</script>
</head>
<?php
$xml=simplexml_load_file($_SERVER['DOCUMENT_ROOT'] . '/1/wp-content/flashxml/3d-carousel-menu-as3-fx/settings.xml');
$ml = "xml.php";
$wynik = "wynik";
echo '<div class="parental">';
foreach($xml->General_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='button' onClick='ajax(\"".$ml."\",\"".$wynik."\")' name='click1' value='General'/>";
}
echo '<div id="wynik">';
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName();
echo ("<br>".$arr["value"]). "<br><br>";
}echo '</div>';
echo "</form>";
echo '</div>';
?>
</html>
zamknięcie formularza dałem wyżej. Pisałeś, że tak to będzie wyglądało...
trueblue
16.05.2014, 06:52:29
Jeśli wywołujesz kod bez ajaxa (czyli z palca), ma się wyświetlać tylko formularz + pusty div "wynik".
Jeśli wywołujesz kod ajaxem, ma się wyświetlić tylko to, co generuje drugi foreach.
Trzeba wykorzystać if-else.
Bart123
16.05.2014, 12:56:26
if (!isset($_POST['button']))
{
echo '<div class="parental">';
foreach($xml->General_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='button' onClick='ajax(\"".$ml."\",\"".$wynik."\")' name='button' value='General'/>";
echo "</form></div>";
}}
else {
echo '<div id="wynik">';
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName();
echo ("<br>".$arr["value"]). "<br><br>";
}
echo '</div></div>';}
Taki zapis nie daje kompletnie nic. button nie działa.
echo '<div class="parental">';
foreach($xml->General_Properties as $parent) {
echo "<form action='' method='POST'>";
echo "<input class='parent' type='button' onClick='ajax(\"".$ml."\",\"".$wynik."\")' name='button' value='General'/>";
echo "</form></div>";}
if (isset($_POST['button']))
{
echo '<div id="wynik">';
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName();
echo ("<br>".$arr["value"]). "<br><br>";
}
echo '</div>';}
Taki również nic.
Jakbym nie kombinował , kliknięcie wyświetla albo drugiego buttona albo nic. Zero diva "wynik". Ten pojawia się tylko wtedy, kiedy nie ma ifów i bez kliknięcia. Po prostu po wejściu na stronę.
Przyznam, że pierwszy raz mam takie problemy, ale też pierwszy raz robię zdalną obsługę slidera. Dodawanie zdjęć już jest, teraz chodz o to, co jest w wyniku czyli ustawienia tego slidera. Tak, żeby można je było zmieniać z poziomu strony - oczywiście każdy z atrybutów wsadzę wtedy w odpowiedni input.
trueblue
16.05.2014, 13:41:10
To, że formularz ma metodę POST nie znaczy, że ajax również z niej korzysta.
Jak pewnie zauważyłeś ajax korzysta w tym przypadku z metody GET, więc o taki warunek powinieneś oprzeć kod.
Warunki nadal są w złych miejscach.
P.S. Formularz obecnie nie jest do niczego potrzebny, przycisk można zastąpić tagiem <a> z odpowiednim atrybutem href.
Bart123
16.05.2014, 13:42:38
Ty masz anielską cierpliwość chłopie
Ja bym przy sobe wymiękł heheh

Dzięki

Jakbyś tak mógł jeszcze podpowedzieć gdzie postawić
if (isset ($_GET['button'])) to bym w końcu miał z tym spokój

Please...
Zrobłem tak, ale oczywiście nadal jest źle bo nie działa. Czuję się jak dziecko w podstawówce. Jezu...
<?php
$xml=simplexml_load_file($_SERVER['DOCUMENT_ROOT'] . '/1/wp-content/flashxml/3d-carousel-menu-as3-fx/settings.xml');
$ml = "xml.php";
$wynik = "wynik";
echo '<div class="parental">';
if (!isset($_GET['button']))
{
foreach($xml->General_Properties as $parent) {
echo "<form action='' method='GET'>";
echo "<input class='parent' type='button' onClick='ajax(\"".$ml."\",\"".$wynik."\")' name='click1' value='General'/>";
echo "</form>";
}}
else {
echo '<div id="wynik">';
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo $child->getName();
echo ("<br>".$arr["value"]). "<br><br>";
}echo '</div>';
}
echo '</div>';
?>
Pewnie chodzi o wstawienie warunków do samej funkcji ajax ? Tylko jak to zapisać?
trueblue
16.05.2014, 14:08:42
Ile $parent jest w General_Properties?
Bart123
16.05.2014, 14:10:00
General_Properties występuje jako parent -
Pytasz ile jest childs w tym rodzicu?
Chodzi ci pewnie o to, że tam niepotrzebnie jest foreach?
Rodziców będzie 8.
Każdy ma inną nazwę. Ale jak zrobię general_properties, żeby wyświetlały się jego podpunkty, to w ten sam sposób zrobię resztę.
Każdy rodzic będzie miał inną liczbę podpunktów. Bez ifa pobiera je wszystkie - tyle że ja je chcę uzyskać dopero po kliknięciu w parent.
Pewnie to ciężko zrozumieć nie widząc efektu.... Nie potrafię jakoś jaśniej wyklarować.
trueblue
16.05.2014, 14:23:26
Nie znam struktury tego XML, więc trochę się gubię.
Tak, chodziło mi o to, że niepotrzebny jest pierwszy foreach.
<?php
$xml=simplexml_load_file($_SERVER['DOCUMENT_ROOT'] . '/1/wp-content/flashxml/3d-carousel-menu-as3-fx/settings.xml');
$ml = "xml.php";
$wynik = "wynik";
if (!isset($_GET['ajax'])) echo '<div class="parental">'; foreach($xml->General_Properties as $parent) {
if (!isset($_GET['ajax'])) echo "<button class='parent' onClick='ajax(\"".$ml."?ajax=1\",\"".$wynik."\")'>Pobierz dzieci</button>"; }
if (!isset($_GET['ajax'])) echo '<div id="wynik">'; else{
foreach($parent->children() as $child) {
$arr = $child->attributes();
echo ("<br>".$arr["value"]). "<br><br>"; }
}
if (!isset($_GET['ajax'])){ }
?>
I bez pierwszego foreach:
<?php
$xml=simplexml_load_file($_SERVER['DOCUMENT_ROOT'] . '/1/wp-content/flashxml/3d-carousel-menu-as3-fx/settings.xml');
$ml = "xml.php";
$wynik = "wynik";
if (!isset($_GET['ajax'])){ echo '<div class="parental">'; echo "<button class='parent' onClick='ajax(\"".$ml."?ajax=1\",\"".$wynik."\")'>Pobierz dzieci</button>"; }
else{
foreach($xml->General_Properties ->children() as $child) { //druk dzieci tylko przy ajaxie
$arr = $child->attributes();
echo ("<br>".$arr["value"]). "<br><br>"; }
}
?>
Bart123
16.05.2014, 14:31:07
Działa:) Dzięki wielkie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.