E-gradiva > Računalništvo > Programiranje > Načrtovanje in razvoj spletnih aplikacij > PHP > AJAX

Prijava

AJAX

 

AJAX – delovanje

 

 

 

 

 

 

 

 

 

 

AJAX primer –
HMTL obrazec

 

<html>
<head>
<script
src="AJAX_namig.js"></script>
</head>
<body>
<form>
<input
type="text" size="30" onkeyup="pokaziNamig(this.value)">

             <div id="namig" style="margin: 0px; width: 194px"></div>
</form>
</body>
</html>

 

AJAX primer –JS pokaziNamig()

 

var xmlHttp;

function pokaziNamig(niz) {

    if (niz.length == 0) {

        document.getElementById('namig') . innerHTML = '';

        return;

    }

    xmlHttp = GetXmlHttpObject();

    if (xmlHttp == null) {

        alert ('Brskalnik ne podpira HTTP zahtevkov');

        return;

    }

    var url = 'primerAjax.php?niz=' + niz;

    xmlHttp.onreadystatechange = stanjeSpremenjeno;

    xmlHttp.open('GET', url, true);

    xmlHttp.send(null);

}

 

 

 

 

 

 

AJAX primer – JS stanjeSpremenjeno()

 

function stanjeSpremenjeno() {

    if (xmlHttp.readyState == 4 || 

        xmlHttp.readyState == 'complete') {

        el = document.getElementById('namig');

        el.innerHTML = xmlHttp.responseText;

    }

 }

 

AJAX primer - JS GetXmlHttpObject()

 

function GetXmlHttpObject() {

    var xmlHttp = null;

    try {

        // Firefox, Opera 8.0+, Safari

        xmlHttp = new XMLHttpRequest();

    } catch (e) {

        // Internet Explorer

        try {

            xmlHttp = new ActiveXObject('Msxml2.XMLHTTP');

        } catch (e) {

            xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');

        }

     }

    return xmlHttp;

}

 

AJAX primer –  PHP odziv

 

<?php // datoteka AJAX_namig.php

$niz = (isset($_GET['niz'])) ? $_GET['niz'] : '';

$rez = '';

if(strlen($niz) > 0) {

  $imena = array('Janez','Janko','Jože','Jan','Joco'

                ,'Jožica','Judita','Marko','Milan','Maja','Maks','Maksimiljan'

                ,'Marcel','Marjan');

  foreach($imena as $ime) {

    if(stripos($ime,$niz) === 0)

      $rez.= $ime. '<br />';

  }

}

echo $rez;

?>

 

AJAX primer – PHP odziv

 

<?php // datoteka primerAjax.php

$xmlDoc = new DOMDocument();       $xmlDoc->load('xml_datoteka_primer.xml');

$x = $xmlDoc->getElementsByTagName('obvestilo');

$iskano = $_GET['iskano']; //iz URL preberi 'iskano’

//preveri ce je iskani niz daljsi od 0 znakov

if (strlen($iskano) > 0) {

    $namig = '';

    for($i=0; $i < ($x->length); $i++) {

        $y = $x->item($i)->getElementsByTagName('za');

        $z = $x->item($i)->getElementsByTagName('od');

        if ($y->item(0)->nodeType == 1) {

            //najdi podatek, ki ustreza iskanemu

            if (stristr($y->item(0)->childNodes->item(0)->nodeValue, $iskano)) {

                $namig = 'Obvestilo od <b>' . $y->item(0)->childNodes->item(0)->nodeValue . '</b> je naslovljeno osebi <b>' . $z->item(0)->childNodes->item(0)->nodeValue . '</b>';

            }

        }

    }

}

// Nastavi odziv (izhod) na 'Ni tega posiljatelja' ce ni zadetka

if ($namig == '') $odziv = "<i>Ni tega pošiljatelja</i>";

else $odziv = $namig;

echo $odziv; //izpisi odziv

?>

 

AJAX – rezultat

 

AJAX primer – jQuery

 

// to nadomesti ves prej omenjen JavaScript; HTML in PHP sta ostaneta enaka

// potrebno je dodati jQuery knjižnico!

function pokaziNamig(niz) {

  if(niz.length > 0) {

    $.ajax({

      type: 'GET',

      url: 'primerAjax.php',

      data: 'niz=' + niz,

      success: function(data) { $('#namig').html(data); },

      error: function() { $('#namig').html('Napaka!'); }

    });

  }

  else

    $("#namig").html('');

}