Odświeżanie div po klinieciu submit, ajax


(Sobladen) #1

Witam

Jak odświeżyć div po kliknięciu w submit w tym divie?

Dodam, że js i ajaxa nie znam prawie w ogóle..;/

-- Dodane 28.01.2010 (Cz) 21:48 --

Nic nie wie?


(Zbyszekborkowski) #2

W takim razie nie masz innego wyboru, tylko się tego nauczyć. Tak na marginesie, AJAX nie jest do tego potrzebny.

Żebyś miał łatwiej, podam Ci słowo klucz - "innerHTML".


(mario@) #3

Pokaż co/ile zrobiłeś z czym masz problem a z pewnością ja bądź ktoś inny postara się Ci pomóc a wytłumaczenie

w Twoim wypadku oznacza - nie znam -> nie chce mi się -> zróbcie za mnie (no chyba że się mylę).

Jeżeli treść jest "wczytana z aktualnej strony" to się zgodzę ale jeżeli wczytuje dynamicznie dane z innego pliku/bazy danych itp. to bez ajaxa raczej się nie obędzie.


(Sobladen) #4

Mam skrypt, który odświeża diva co 10s ale nie moge go przerobić na przycisk, próbowałem onCilck="odswiezaj()" ale nie działa;/

plik: odswiezaj.js

var object = false;


if (window.XMLHttpRequest) object = new XMLHttpRequest();

else if (window.ActiveXObject) object = new ActiveXObject("Microsoft.XMLHTTP");


function getData(dataSource, divID)

{


    if (object.readyState==4 || object.readyState==0) 

    {


        var obj = document.getElementById(divID);



        object.open("GET", dataSource);



        object.onreadystatechange = function()

        {


            if (object.readyState == 4 && object.status == 200) 

            obj.innerHTML= object.responseText;

        }


         object.send(null);

      }

}


function odswiezaj()

{

      getData('zawartosc_diva.php','mojDIVIK');

      setTimeout("odswiezaj()", 10000);

}

zawartosc_diva.php (podaje przykład, prawdziwy plik wygląda inaczej, jest tam łączenie sie z bazą itd)

teraz div na stronie:

[/code] A jest taka możliwość aby nie trzeba było wczytywać pliku?? Jeśli tak to jak to zrobić? Zalezyło by mi na tym.. bo z sesji chcialbym pobierać nazwę usera, a w includowanym pliku nie działa;/ Chodzi mi o takie coś:
[code]

zastosowałem już komendę w input. Czy jest taka możliwośc?

Z góry dzięki za pomoc, zależy mi tez trochę na czasie.


(mario@) #5

Sam skrypt (i przycisk odśwież) działa ale mi osobiście nie podoba się trochę składnia funkcji getData

function getData(dataSource, divID)

    {

	    object.onreadystatechange = function()

            {

                if (object.readyState == 4)

                	document.getElementById(divID).innerHTML= object.responseText;

            }

            object.open("GET", dataSource,true);

	    object.send(null);

    }

We wczytywanym pliku również musisz rozpocząć sesję. Zawsze można tez przesłać dowolne dane ajaxem (najwygodniej poprzez get).


(Sobladen) #6

Działa bo się odświeża samo. Ale jak usunę: setTimeout("odswiezaj()", 10000); I klinie sie w przycisk to się nie odświeża..

A jak to zrobić bez wczytywania się pliku: zawartosc_diva.php tylko żeby ten kody był tam gdzie jest div?


(mario@) #7

Odświeża się odświeża :slight_smile:

Główny plik

KLIK

[/code] Wczytywany plik - test.php
[code] KLIK 2 dfgdfg


(Sobladen) #8

A jak to zrobić bez wczytywania pliku? Chodzi mi o to żeby wszystko było w jednym pliku.

Mam jeszcze jeden skrypt. Działa ok z datą, a jak zrobić żeby działo tez tutaj php?

Link do spakowanych plików:

http://www.sendspace.pl/file/ed83db9ee89dc1fb78e47aa


(mario@) #9

Ale co ?

PHP normalnie będzie działało (z pliku test.php). Np. zawartość pliku test.php

<?php

	echo date("Y-m-d G:i:s");

?>

Do odswiezaj() dodaj setTimeout("odswiezaj()", 1000); i masz zegarek :wink:

W tych plikach co podałeś to więcej tam czytania niż mi się chce :slight_smile: Najlepiej oprzyj kod na tym co jest powyżej.


(Sobladen) #10

W tych plikach co podałem wystarczy jak zobaczysz na index.php

--

Php działa, ale

$uzytkownik = $_SESSION['login'];

już nie, dlatego chciałem żeby wszystko było w jednym pliku.


(mario@) #11

Dla powyższych skryptów

index.php

<?php

	session_start();

	$_SESSION['login'] = 'mario@';

?>



KLIK

[/code] test.php
[code] <?php session_start(); echo $_SESSION['login']; ?>

I wszystko szybciej, jaśniej niż przy użyciu tamtej klasy.


(Sobladen) #12

Problem rozwiązany.

Dzięki.

Pozdrawiam


(Danio94) #13

Temat może stary ale mam pytanie co do skryptu. W pliku test.php muszę łączyć się z bazą danych na nowo. W jaki sposób zrobić aby div i plik test.php korzystał z już nawiązanego połączenia z bazą na tej stronie na której div jest umieszczany? Proszę o pomoc.


(mario@) #14

Raczej się tak nie da ale tutaj mogę się mylić. Jeżeli połączenie wymaga jakichś unikalnych parametrów to je prześlij poprzez ajaxa ale same połączenie z bazą danych wykonaj w pliku, do którego się odwołujesz.