Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> button onClick - Echo w echo, Jak to zapisać by działało?
Bart123
post
Post #1





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 10.05.2014
Skąd: Elbląg

Ostrzeżenie: (10%)
X----


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.
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 36)
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Jaki efekt/kod chcesz uzyskać?
Go to the top of the page
+Quote Post
Bart123
post
Post #3





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 10.05.2014
Skąd: Elbląg

Ostrzeżenie: (10%)
X----


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>';




?>




Ten post edytował Bart123 12.05.2014, 21:07:32
Go to the top of the page
+Quote Post
IProSoft
post
Post #4





Grupa: Zarejestrowani
Postów: 479
Pomógł: 97
Dołączył: 6.09.2011
Skąd: php.net :)

Ostrzeżenie: (0%)
-----


Używaj BBCODE bo nie da się tego czytać.

Załaduj

  1. foreach($parent->children() as $child) {
  2. $arr = $child->attributes();
  3. echo $child->getName();
  4. 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.
Go to the top of the page
+Quote Post
Bart123
post
Post #5





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 10.05.2014
Skąd: Elbląg

Ostrzeżenie: (10%)
X----


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.

Ten post edytował Bart123 13.05.2014, 11:54:28
Go to the top of the page
+Quote Post
timon27
post
Post #6





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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.

Ten post edytował timon27 13.05.2014, 17:09:04
Go to the top of the page
+Quote Post
Bart123
post
Post #7





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 10.05.2014
Skąd: Elbląg

Ostrzeżenie: (10%)
X----


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...

Ten post edytował Bart123 13.05.2014, 17:50:40
Go to the top of the page
+Quote Post
timon27
post
Post #8





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


funkcja ajax:
  1. function ajax(url,destination){
  2. document.getElementById(destination).innerHTML='<img src="wait.gif">';
  3. var xmlhttp;
  4. if (window.XMLHttpRequest){
  5. xmlhttp=new XMLHttpRequest();
  6. }else{
  7. xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  8. }
  9. xmlhttp.onreadystatechange=function(){
  10. if (xmlhttp.readyState==4 && xmlhttp.status==200){
  11. document.getElementById(destination).innerHTML=xmlhttp.responseText;
  12. }
  13. }
  14. xmlhttp.open("GET",url,true);
  15. xmlhttp.send();
  16. }


Co robi:
"wchodzi" na adres url a następnie całość co zobaczy wczytuje do diva/spana o id destination

czyli w twoim wypadku zamiast:
  1. <input type=submit>

piszesz:
  1. <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

Ten post edytował timon27 13.05.2014, 19:21:15
Go to the top of the page
+Quote Post
Bart123
post
Post #9





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 10.05.2014
Skąd: Elbląg

Ostrzeżenie: (10%)
X----


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?

Ten post edytował Bart123 15.05.2014, 19:27:25
Go to the top of the page
+Quote Post
trueblue
post
Post #10





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


  1. function ajax(file,wynik){
  2.  
  3. xmlhttp.open("GET",file,true);



  1. 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.


Go to the top of the page
+Quote Post
Bart123
post
Post #11





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 10.05.2014
Skąd: Elbląg

Ostrzeżenie: (10%)
X----


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ę...

Ten post edytował Bart123 15.05.2014, 19:47:40
Go to the top of the page
+Quote Post
trueblue
post
Post #12





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Popraw trzy powyższe błędy, do rady nie trzeba się stosować, aby skrypt działał.
Go to the top of the page
+Quote Post
Bart123
post
Post #13





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 10.05.2014
Skąd: Elbląg

Ostrzeżenie: (10%)
X----


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?
Go to the top of the page
+Quote Post
trueblue
post
Post #14





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Nie wygląda tak.
Zmień linijki w kodzie, na te które Ci podałem.
Go to the top of the page
+Quote Post
Bart123
post
Post #15





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 10.05.2014
Skąd: Elbląg

Ostrzeżenie: (10%)
X----


<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...
Go to the top of the page
+Quote Post
trueblue
post
Post #16





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


  1. function ajax(file,wynik){

  1. xmlhttp.open("GET",file,true);

  1. $xml = "xml.php";
  2. $wynik = "wynik";


Go to the top of the page
+Quote Post
Bart123
post
Post #17





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 10.05.2014
Skąd: Elbląg

Ostrzeżenie: (10%)
X----


<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>';







?>


Go to the top of the page
+Quote Post
trueblue
post
Post #18





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


A co z trzecią poprawką?

I kolejna:
  1. onclick='ajax(\"".$xml."\",\"".$wynik."\")'


Ten post edytował trueblue 15.05.2014, 20:01:40
Go to the top of the page
+Quote Post
Bart123
post
Post #19





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 10.05.2014
Skąd: Elbląg

Ostrzeżenie: (10%)
X----


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

Ten post edytował Bart123 15.05.2014, 20:05:01
Go to the top of the page
+Quote Post
trueblue
post
Post #20





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Funkcję ajax trzeba objąć w tagi <script>.
Go to the top of the page
+Quote Post
Bart123
post
Post #21





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 10.05.2014
Skąd: Elbląg

Ostrzeżenie: (10%)
X----


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>

Ten post edytował Bart123 15.05.2014, 20:20:43
Go to the top of the page
+Quote Post
trueblue
post
Post #22





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


  1. document.getElementById(wynik).innerHTML=xmlhttp.responseText;



Go to the top of the page
+Quote Post
Bart123
post
Post #23





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 10.05.2014
Skąd: Elbląg

Ostrzeżenie: (10%)
X----


<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?(IMG:style_emoticons/default/smile.gif)

Ten post edytował Bart123 15.05.2014, 20:31:11
Go to the top of the page
+Quote Post
trueblue
post
Post #24





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


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).
Go to the top of the page
+Quote Post
Bart123
post
Post #25





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 10.05.2014
Skąd: Elbląg

Ostrzeżenie: (10%)
X----


Jeżeli chodzi onreadystatechange to zdaje się zmienłem na prawidłowe. I dalej bez efektu (IMG:style_emoticons/default/sad.gif)

<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.

Ten post edytował Bart123 15.05.2014, 20:50:03
Go to the top of the page
+Quote Post
trueblue
post
Post #26





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Bart123
post
Post #27





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 10.05.2014
Skąd: Elbląg

Ostrzeżenie: (10%)
X----


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 (IMG:style_emoticons/default/sad.gif)

Ten post edytował Bart123 15.05.2014, 21:21:21
Go to the top of the page
+Quote Post
trueblue
post
Post #28





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Nie zamknąłeś deklaracji funkcji ajax, brakuje }.
Go to the top of the page
+Quote Post
Bart123
post
Post #29





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 10.05.2014
Skąd: Elbląg

Ostrzeżenie: (10%)
X----


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...

Ten post edytował Bart123 15.05.2014, 22:56:50
Go to the top of the page
+Quote Post
trueblue
post
Post #30





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Bart123
post
Post #31





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 10.05.2014
Skąd: Elbląg

Ostrzeżenie: (10%)
X----


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.

Ten post edytował Bart123 16.05.2014, 13:41:23
Go to the top of the page
+Quote Post
trueblue
post
Post #32





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Bart123
post
Post #33





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 10.05.2014
Skąd: Elbląg

Ostrzeżenie: (10%)
X----


Ty masz anielską cierpliwość chłopie (IMG:style_emoticons/default/wink.gif)

Ja bym przy sobe wymiękł heheh (IMG:style_emoticons/default/wink.gif) Dzięki (IMG:style_emoticons/default/wink.gif)

Jakbyś tak mógł jeszcze podpowedzieć gdzie postawić

if (isset ($_GET['button'])) to bym w końcu miał z tym spokój (IMG:style_emoticons/default/sad.gif)

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ć?

Ten post edytował Bart123 16.05.2014, 14:03:24
Go to the top of the page
+Quote Post
trueblue
post
Post #34





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Ile $parent jest w General_Properties?
Go to the top of the page
+Quote Post
Bart123
post
Post #35





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 10.05.2014
Skąd: Elbląg

Ostrzeżenie: (10%)
X----


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ć.

Ten post edytował Bart123 16.05.2014, 14:21:09
Go to the top of the page
+Quote Post
trueblue
post
Post #36





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Nie znam struktury tego XML, więc trochę się gubię.
Tak, chodziło mi o to, że niepotrzebny jest pierwszy foreach.

  1. <?php
  2. $xml=simplexml_load_file($_SERVER['DOCUMENT_ROOT'] . '/1/wp-content/flashxml/3d-carousel-menu-as3-fx/settings.xml');
  3. $ml = "xml.php";
  4. $wynik = "wynik";
  5.  
  6.  
  7.  
  8. if (!isset($_GET['ajax'])) echo '<div class="parental">';
  9. foreach($xml->General_Properties as $parent) {
  10. if (!isset($_GET['ajax'])) echo "<button class='parent' onClick='ajax(\"".$ml."?ajax=1\",\"".$wynik."\")'>Pobierz dzieci</button>";
  11. }
  12. if (!isset($_GET['ajax'])) echo '<div id="wynik">';
  13. else{
  14. foreach($parent->children() as $child) {
  15. $arr = $child->attributes();
  16. echo $child->getName();
  17. echo ("<br>".$arr["value"]). "<br><br>";
  18. }
  19. exit();
  20. }
  21. if (!isset($_GET['ajax'])){
  22. echo '</div>';
  23. echo '</div>';
  24. }
  25.  
  26. ?>


I bez pierwszego foreach:
  1. <?php
  2. $xml=simplexml_load_file($_SERVER['DOCUMENT_ROOT'] . '/1/wp-content/flashxml/3d-carousel-menu-as3-fx/settings.xml');
  3. $ml = "xml.php";
  4. $wynik = "wynik";
  5.  
  6.  
  7.  
  8. if (!isset($_GET['ajax'])){
  9. echo '<div class="parental">';
  10. echo "<button class='parent' onClick='ajax(\"".$ml."?ajax=1\",\"".$wynik."\")'>Pobierz dzieci</button>";
  11. echo '<div id="wynik">';
  12. echo '</div>';
  13. echo '</div>';
  14. }
  15. else{
  16. foreach($xml->General_Properties ->children() as $child) { //druk dzieci tylko przy ajaxie
  17. $arr = $child->attributes();
  18. echo $child->getName();
  19. echo ("<br>".$arr["value"]). "<br><br>";
  20. }
  21. exit();
  22. }
  23.  
  24. ?>
Go to the top of the page
+Quote Post
Bart123
post
Post #37





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 10.05.2014
Skąd: Elbląg

Ostrzeżenie: (10%)
X----


Działa:) Dzięki wielkie.

Ten post edytował Bart123 16.05.2014, 16:48:27
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.12.2025 - 10:31