Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Mam problem z formularzem ajaxowym ;/ Mianowicie plik z formularzem jest pokazywany w stronie (index.php) za pomocą
include('dod_newsa.php')
. I gdy strona z formularzem jest załadowana poprzez index.php (czyli załadowana w div'ie za pomocą include('dod_newsa.php') ;) ) formularz nie działa ;/ natomiast gdy uruchomię sam plik dod_newsa.php w przeglądarce to wszystko chodzi jak ta lala ;)
Pliki ;)
dod_newsa.php
<html> <head> <script type="text/javascript"> var XMLHttpRequestObject = false; if (window.XMLHttpRequest) { ObiektXMLHttp = new XMLHttpRequest(); } else if (window.ActiveXObject) { ObiektXMLHttp = new ActiveXObject("Microsoft.XMLHTTP"); } function wysylanie() { var zrodlo = wpis.php; var cel = document.getElementById('formularz'); if(ObiektXMLHttp) { ObiektXMLHttp.open("POST", zrodlo); ObiektXMLHttp.onreadystatechange = function() { if (ObiektXMLHttp.readyState == 1) { cel.innerHTML = "ładuję"; } if (ObiektXMLHttp.readyState == 4) { cel.innerHTML = "Zrobione"; } } ObiektXMLHttp.send(null); } cel.style.visibility = 'hidden'; return true; } function koniec(result) { var result = result; if(result == 0) { document.getElementById('formularz').innerHTML = "News dodany"; } if(result == 1) { document.getElementById('formularz').innerHTML = "Nie wszystkie pola były wypełnione!!"; } } </script> <body> <br><br> <div id="formularz"> <form action="wpis.php" name="myform" id="myform" method="POST" enctype="multipart/form-data" target="upload_target"> Autor: <input type=text name=autor id="pole_tekstowe"> <br><br> e-mail: <input type=text name=email id="pole_tekstowe"> <br><br> Tytul: <input type=text name=tytul id="pole_tekstowe"> <br><br> Treść: <TEXTAREA name="news" rows="5" cols="50" id="pole_tekstowe"></TEXTAREA><br><br> <input type=submit value="Dodaj wpis" id="submit2"> <input type=reset id="submit2"><br> <iframe id="upload_target" name="upload_target" src="#" style="width:0;height:0;border:0px solid #fff;"></iframe> </form> </div> </html> </head> </body>
wpis.php
<html> <?php include('polacz.php'); mysql_select_db("strona"); $result = 0; $autor = $_POST['autor']; $news = $_POST['news']; $tytul = $_POST['tytul']; $email = $_POST['email']; if($autor != null AND $news != null AND $tytul != null AND $email != null) { $dodanie = "INSERT INTO news ( autor, data, news, tytul, email) VALUES ('$autor' , NOW() , '$news' , '$tytul', '$email')"; $wynik = mysql_query($dodanie) or die (mysql_error()); $result = 0; } else { $result = 1; } ?> <script language="javascript" type="text/javascript">window.top.window.koniec(<?php echo $result; ?>);</script> </body></html>
index.php
<html> <head> <script type="text/javascript" src="js/prototype.js"></script> <script type="text/javascript" src="js/scriptaculous.js?load=effects,builder"></script> <script type="text/javascript" src="js/lightbox.js"></script> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>giegielNET</title> <meta name="keywords" content="" /> <meta name="description" content="" /> <link href="default.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="header"> <div id="menu"> <ul> <li><a href="index.php" accesskey="1" title="">Główna</a></li> <li><a href="/stara_wersja/" accesskey="2" title="">Stara Wersja</a></li> <li><a href="#" accesskey="3" title="">Information</a></li> <li><a href="#" accesskey="4" title="">About</a></li> <li><a href="#" accesskey="5" title="">Contact</a></li> </ul> </div> </div> <div id="content"> <div id="colOne"><br /> <div class="boxed"> <h3>Menu</h3><br /> <ul> <li class="first"><a href="/stara_wersja/">Stara wersja</a></li> <li><a href="index.php?str=samba">Samba</a></li> <li><a href="index.php?str=galeria">Galeria</a></li> <li><a href="index.php?str=nnews">Nowy news</a></li> <li><a href="index.php?str=dodaj_zdj">Dodaj zdjęcie</a></li> <li><a href="index.php?str=ajax">Ajax</a></li> </ul> </div> <div class="boxed"> <h3>Subskrypcja</h3> <ul> <li class="first"></li>Wpisz adres email: <form method="POST" action=""> <div> <input type="text" name="textfield1" id="textfield1" /> <input type="submit" name="wyslij" id="submit1" value="ok" /> </div><br /> </li> </ul> </div> </div><br /> <div id="colTwo"><br /> <?php $id = $_GET['id']; if($id != null) { include('galeria/galeria.php'); } else { $str = $_GET['str']; switch ($str) { case "samba": include('samba.php'); break; case "galeria": include('galeria/galeria.php'); break; case null: include('glowna.php'); break; case "nnews": include('dodanie_newsa.php'); break; case "wszystkie": include('wszystkie.php'); break; case "dodaj_zdj": include('galeria/dodanie_zdj.php'); break; case "ajax": include('ajax.php'); break; } } ?><br /> </div><br /> </div><br /> <br /><br> <br /><p><div id="footer"> <p>Copyright (c) 2008 <a href="mailto:kuba_ce@wp.pl">giegiel</a></p> </div></p> </body> </html>
HELP bo nie mogę sobie dać rady ;/
Offline
Ja uzywam XML;a jako komunkatora pomiedzy PHP a AJAX;em i niezle to dziala.
ObiektXMLHttp.send(null);
jak masz null to uzywaj get a jak chcesz post to w send musza byc podane parametry, np:
var url = "get_data.php"; var params = "lorem=ipsum&name=binny"; http.open("POST", url, true); //Send the proper header information along with the request http.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); http.setRequestHeader("Content-length", params.length); http.setRequestHeader("Connection", "close"); http.onreadystatechange = function() {//Call a function when the state changes. if(http.readyState == 4 && http.status == 200) { alert(http.responseText); } } http.send(params);
Offline
No dobrze ale to co zrobiłem działa ;) lecz jeśli otwieram plik dod_newsa.php za pomocą
http://localhost/dod_newsa.php
A nie działa jeżeli otwieram poprzez stronę index.php czyli za pomocą
include('dod_newsa.php');
wstawiam stronę dod_newsa.php w div'a ;)
Zmieniłem na GET i jest to samo ;/
Offline
aha, juz qmam, masz 3 rozwiazania:
1) zrob za pomoca innerHTML i dzialaj na div;ach
2) zrob to w ramce,
3) zawartosc dod_newsa.php zrob jako funkcje i pozniej wyswietlaj.
Offline
;) pierwsza opcja może być ciekawa ;) tylko nie wiem o co biega dokładniej proszę bo nie rozumiem ;/ na razie ciemny jestem w tym temacie ;)
Offline
1) zrob funkcje z formularzem np.
function registerForm() { getElementById('form').innerHTML = "i tutaj wstawiasz formulasz i pamietaj o lamaniu \ wierszy"; getElementById('form').innerHTML += "to doda zawartosc, a poprzednia funkcja nadpisuje zawartosc"; }
2) przypisz to do body, czyli
<body onload="registerForm()"> <div id="form" /> ... </body>
i to wszystko :)
Ostatnio edytowany przez jezoo (2008-09-08 21:23:08)
Offline
jejeje działa ;) dzięki wielkie ;)
Offline
prosze :)
Offline
Nie będę nowego tematu zakładał ;) bo to bez sensu porządek musi być ;p Problem mam w tym że jak ładuję plik oraz newsa ;) to nie pokazuje się informacja o ładowaniu ;/ gdzie jest szkopuł??
<html> <head> <script type="text/javascript"> var XMLHttpRequestObject = false; if (window.XMLHttpRequest) { ObiektXMLHttp = new XMLHttpRequest(); } else if (window.ActiveXObject) { ObiektXMLHttp = new ActiveXObject("Microsoft.XMLHTTP"); } function wysylanie() { var zrodlo = 'galeria/upload.php'; var cel = document.getElementById('formularz'); if(ObiektXMLHttp) { ObiektXMLHttp.open("GET", zrodlo); ObiektXMLHttp.onreadystatechange = function() { if (ObiektXMLHttp.readyState == 1) { cel.innetHTML = "<center>Ładuję plik.. Proszę czekać.<br><br><img src='style/images/loader.gif'></center>"; } if (ObiektXMLHttp.readyState == 4) { cel.innetHTML = "Załadowane"; } } ObiektXMLHttp.send(null); } } function koniec_zdjecia(result) { var result = result; if(result == 0) { document.getElementById('formularz').innerHTML = "Zdjęcie zostało dodane.<br><br>"; form(); } if(result == 1) { document.getElementById('formularz').innerHTML = "<b></b>Coś poszło nie tak!!</b><br><br>"; form(); } } function dodanie() { var zrodlo = wpis.php; var cel = document.getElementById('formularz'); if(ObiektXMLHttp) { ObiektXMLHttp.open("POST", zrodlo); ObiektXMLHttp.onreadystatechange = function() { if (ObiektXMLHttp.readyState == 1) { cel.innerHTML = "Ładuję formularz..."; } } ObiektXMLHttp.send(null); } } function koniec_news(result) { var result = result; if(result == 0) { document.getElementById('formularz').innerHTML = "News został dodany."; form(); } if(result == 1) { document.getElementById('formularz').innerHTML = "<b></b>Nie wszystkie pola zostały wypełnione!!</b><br><br>"; form(); } } function pogrubienie() { document.form_news.news.value += '<b>Tutaj wpisz tekst który chcesz pogrubić</b>'; } function wysrodkowanie() { document.form_news.news.value += '<center>Tutaj wpisz tekst który chcesz wyśrodkować</center>'; } function nowa_linia() { document.form_news.news.value += '<br>'; } function form() { document.getElementById('formularz').innerHTML += '<center><h2>Dodanie zdjęcia</h2></center><hr><br><form action="galeria/upload.php" method="post" enctype="multipart/form-data" target="upload_target" >Plik: <input name="plik" type="file" size="30" class="fileinputs" id="pole_tekstowe"/><br><br>Opis: <input type=text maxlength="50" name="opis" id="pole_tekstowe"><br><br>Wybierz folder: <?php echo '<select name="folderl" size="1" id="pole_tekstowe">'; echo '<option value="nowy">Nowy folder</option>'; $connect = mysql_connect("localhost", "user" , "haslo") or die ("Sprawdź połączenie z serwerem"); mysql_select_db("strona"); $sql = "SELECT * FROM foldery"; $result = mysql_query($sql) or die(mysql_error()); if(mysql_num_rows($result) > 0) { while($row = mysql_fetch_array($result)) { $folderlist[$row['id']] = $row['folder']; } foreach($folderlist as $id) { echo '<option value='.$id.'>'.$id.'</option>'; } } echo '</select>'; ?> lub <input type="text" name="folder" Value="Wpisz nazwę folderu" id="pole_tekstowe"/><br><br><input type="submit" name="submitBtn" id="submit2" value="Wyślij" onclick="wysylanie()"/></form><br><hr><center><h2>Dodanie newsa</h2></center><form name="form_news" action="wpis.php" method="POST" enctype="multipart/form-data" target="upload_target">Autor: <input type="text" name="autor" id="pole_tekstowe"> <br><br>e-mail: <input type="text" name="email" id="pole_tekstowe"> <br><br> Tytul: <input type="text" name="tytul" id="pole_tekstowe"> <br><br>Treść: <TEXTAREA name="news" rows="5" cols="50" id="pole_tekstowe"></TEXTAREA><br><br> <input type="submit" value="Dodaj wpis" id="submit2" onclick="dodanie()"> <input type="reset" id="submit2"> <input type = "button" value = "Pogrubienie" id="submit1" onclick = "pogrubienie()"> <input type = "button" value = "Wyśrodkowanie" id="submit1" onclick = "wysrodkowanie()"> <input type = "button" value = "Nowa linia" id="submit1" onclick = "nowa_linia()"> <input type = "button" value = "Pomoc" id="pomoc_guz" onclick = "help()"><br><iframe id="upload_target" name="upload_target" src="#" style="width:0;height:0;border:0px solid #fff;"></iframe></form>'; } function help() { document.getElementById('help').innerHTML = '<hr><br><ul type="disc"><li>Aby pogrubić tekst należy nacisnąć przycisk <strong>"pogrubienie"</strong> a następnie zamiast tekstu <b>"Tutaj wpisz tekst który chcesz pogrubić"</b> należy wpisać własny, pożądany napis. UWAGA!! nie usuwamy znaczników "<" oraz ">" ani tego co najduje sie między nimi.</li><li>Aby wysrodkować tekst należy nacisnąć przycisk <strong>"wyśrodkowanie"</strong> a następnie zamiast tekstu <b>"Tutaj wpisz tekst który chcesz wyśrodkować"</b> należy wpisać własny, pożądany napis. UWAGA!! nie usuwamy znaczników "<" oraz ">" ani tego co najduje sie między nimi.</li><li>Aby przejść do następnej lini należy kliknąć przycisk <strong>"nowa linia"</strong> a następnie za tym znacznikiem który się wstawił wpisać treść znajdującą się w następnej lini.</li><li>Pisząc newsa pamiętaj aby zachować umiar, ponieważ zbytnie przesadzenie w objętości spowoduje brzydki wygląd strony głównej.</li></ul><input type = "button" value = "Zwiń pomoc" id="pomoc_guz" onclick = "help_zw()">'; } function help_zw() { document.getElementById('help').innerHTML = ''; } </script> <body onload="form()"> <div id="formularz"> </div> <div id="help"> </div> </body> </html> </head>
jezoo (czyt.jezuu) wołam o pomoc ;p Ale jak kto inny pomoże to będzie równie dobrze
Offline
przypuszczam, ze wczytanie jest newsa lub wiadomosci jest szybsze niz Twoje oko :) przy wiekszej ilosci danych bedziesz widzial loadera :)
a checkReadyState ja mam zrobione na cse;ie:
function checkReadyState(obj, id) { switch(obj.readyState) { case 0: document.getElementById(id).innerHTML = "Trwa wysyłanie żądania..."; break; case 1: document.getElementById(id).innerHTML = "Trwa wczytywanie odpowiedzi..."; break; case 2: document.getElementById(id).innerHTML = "Odpowiedź wczytana..."; break; case 3: document.getElementById(id).innerHTML = "Odpowiedź gotowa..."; break; case 4: document.getElementById(id).innerHTML = ""; return (obj.status == 200); break; default: document.getElementById(id).innerHTML = "Wystąpił nieoczekiwany błąd."; } }
i dziala elegancko :)
btw
jezoo nie jezuu :)
Offline
Nio ale przy ładowaniu fotki nie hasa ;/ więc musi być coś nie tak ;/
Offline
nie,nie on pisze ladowanie do mometu kiedy nie dostanie 'czegos' do wyswietlenia, gdy dostanie to przechodzi do stanu '3' a pozniej '4'
Offline
No właśnie a u mnie nie pisze ładowanie... I nie mogę dojść do tego co jest nie tak bo wg. mnie nic nie wysyłam podczas ładowania. Chyba że
<body onload="form()">
to ma jakiś związek z tym ale wątpię żeby miało na to wpływ
Offline
no to nie ma zadnego zwiazku z informacja jaki jest status
Offline
Giegiel, jak Ciebie dalej trapi to, ze nie masz statusu wyswietlanego to mam rozwiazanie, ale opiera sie o XML;a.
jak bedziesz chial to Ci napisze :)
Offline