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



Członek DUG




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


Dzięcioł



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



Członek DUG




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


Dzięcioł



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



Członek DUG




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


Dzięcioł



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



Członek DUG




jejeje działa ;) dzięki wielkie ;)
Offline


Dzięcioł



prosze :)
Offline



Członek DUG




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


Dzięcioł



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



Członek DUG




Nio ale przy ładowaniu fotki nie hasa ;/ więc musi być coś nie tak ;/
Offline


Dzięcioł



nie,nie on pisze ladowanie do mometu kiedy nie dostanie 'czegos' do wyswietlenia, gdy dostanie to przechodzi do stanu '3' a pozniej '4'
Offline



Członek DUG




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


Dzięcioł



no to nie ma zadnego zwiazku z informacja jaki jest status
Offline


Dzięcioł



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