Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako da detektujem ajax request sa php?

[es] :: PHP :: Kako da detektujem ajax request sa php?

[ Pregleda: 2643 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

sekvoja

Član broj: 91239
Poruke: 269
*.ptt.rs.



Profil

icon Kako da detektujem ajax request sa php?03.08.2008. u 23:27 - pre 191 meseci
Nesto kao:

Code:
if(xmlhttprequest) {
   // jeste
} else {
   //nije
}
 
Odgovor na temu

sekvoja

Član broj: 91239
Poruke: 269
*.ptt.rs.



Profil

icon Re: Kako da detektujem ajax request sa php?04.08.2008. u 01:57 - pre 191 meseci
Dodao sam javascript u formu:

Code:
<form action="/process.php" method="POST" name="vote" onsubmit="example(); return false;">
   <input type="hidden" name="t" value="0" />
   
   <script language="javascript"><!--
   window.document.vote.t.value = 1;
</script>
</form>

tako da kada je javascript enabled vrednost t je jednaka 1, a to znaci da saljem
upit sa ajaxom.

F-ja example():

Code:
function example(){
   var url = "process.php";
   xmlhttp.open("POST", url, true);
   xmlhttp.onreadystatechange=function(){
      if(xmlhttp.readyState==4){
         result = xmlhttp.responseText;
        document.getElementById('votemsg').innerHTML = result; 
      }
   }
   xmlhttp.send(null);
}

U div votemsg hocu da upisem "Ajax" ili "HTTP", na zalost uvek dobijam HTTP. U cemu bi bio problem?

process.php:

Code:
if($_POST['t'] == 1) {
   echo 'Ajax';
} else {
   echo 'HTTP';
}



A evo i requesta:

Code:
var xmlhttp=false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
// JScript gives us Conditional compilation, we can cope with old IE versions.
// and security blocked creation of the objects.
 try {
  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
 } catch (e) {
  try {
   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (E) {
   xmlhttp = false;
  }
 }
@end @*/
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
    try {
        xmlhttp = new XMLHttpRequest();
    } catch (e) {
        xmlhttp=false;
    }
}
if (!xmlhttp && window.createRequest) {
    try {
        xmlhttp = window.createRequest();
    } catch (e) {
        xmlhttp=false;
    }
}
Prikačeni fajlovi
 
Odgovor na temu

Aleksandar Ružičić
Software Architect, Appricot d.o.o.
Beograd

Član broj: 26939
Poruke: 2881

Jabber: krckoorascic@gmail.com
Sajt: krcko.net


+44 Profil

icon Re: Kako da detektujem ajax request sa php?04.08.2008. u 02:34 - pre 191 meseci
za detekciju da li je u pitanju ajax request ja ti preporucujem da podesis neki header koji ce php da proveri.


e da, pogledaj jQuery JavaScript Library izmedju ostalog ima i odlicnu podrsku za rad sa ajaxom (dosta je jednostavno koristiti biblioteku)
 
Odgovor na temu

sekvoja

Član broj: 91239
Poruke: 269
*.ptt.yu.



Profil

icon Re: Kako da detektujem ajax request sa php?04.08.2008. u 14:12 - pre 191 meseci
Nasao sam na netu da je nalakse detektovati request sa variablom
u url (&ajax=1) ili hidden poljem u formi. U skriptu koji sam prilozio
kao attachment u mom drugom postu to sam i uradio ali je problem
sto php ne prepoznaje post promenljive kada upit ide preko ajaxa.

Nisam neki js guru, pa nisam ni siguran da to moze tako da radi.
Znam za jquery, zanimljiv library...
 
Odgovor na temu

Aleksandar Ružičić
Software Architect, Appricot d.o.o.
Beograd

Član broj: 26939
Poruke: 2881

Jabber: krckoorascic@gmail.com
Sajt: krcko.net


+44 Profil

icon Re: Kako da detektujem ajax request sa php?04.08.2008. u 17:21 - pre 191 meseci
jquery upravo koristi header prilikom slanja requesta tako da mozes jednostavno u php scripti da vidis da li je u pitanju ajax request ili ne:
Code:

$.post('url/do/skripte.php', {param1: 'bla', param2: 123}, function(data)
{
    alert(data);
});


Code:

<?php

  if ($_SERVER['X-Requested-With'] == 'XMLHttpRequest')
  {
     echo 'ajax';
  }
  else
  {
    echo 'http';
  }

?>

naravno ne moras jquery koristiti samo zbog toga sto ti podesava odgovarajuci header, to mozes sam:
Code:

xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");

ali je (bar meni) mnogo lakse praviti ajax aplikacije pomocu ove biblioteke nego "rucno"...
 
Odgovor na temu

sekvoja

Član broj: 91239
Poruke: 269
*.ptt.yu.



Profil

icon Re: Kako da detektujem ajax request sa php?04.08.2008. u 18:00 - pre 191 meseci
Evo sad bas gledam jquery, ali me interesuje ovo konkretno sto sam
pitao. Znaci zasto php ne prepoznaje variablu kada ona stize ajax upitom?

Ako ne moze onako kako ja hocu ne gine mi jquery :)
 
Odgovor na temu

Aleksandar Ružičić
Software Architect, Appricot d.o.o.
Beograd

Član broj: 26939
Poruke: 2881

Jabber: krckoorascic@gmail.com
Sajt: krcko.net


+44 Profil

icon Re: Kako da detektujem ajax request sa php?04.08.2008. u 18:12 - pre 191 meseci
jesi li probao if($_REQUSET['ime-varijable'])?
 
Odgovor na temu

sekvoja

Član broj: 91239
Poruke: 269
*.ptt.yu.



Profil

icon Re: Kako da detektujem ajax request sa php?04.08.2008. u 18:39 - pre 191 meseci
Upravo probao i ne radi...

Pazi, PHP ne prepoznaje variable samo kada upit stize ajaxom.
Kada iskljucim javascript onda mogu da vidim sve promenljive...
Sa Web Developer toolbarom iz ff mogu da menjam vrednost
ajax u formi u 1 ili 2. Tada se ehuje sve ok. Nije mi jasno sta
ne radi u ovoj prostoj skripti ccc. A ne treba mi nista vise od
prostog echa prave vrednosti.
 
Odgovor na temu

Aleksandar Ružičić
Software Architect, Appricot d.o.o.
Beograd

Član broj: 26939
Poruke: 2881

Jabber: krckoorascic@gmail.com
Sajt: krcko.net


+44 Profil

icon Re: Kako da detektujem ajax request sa php?04.08.2008. u 19:03 - pre 191 meseci
sad sam malo bolje pogledao tvoj js kod i jasno mi je sto nece da ti radi :)

elem, ti uopste i ne saljes podatke serveru kroz ajax upit: xmlhttp.send(null);
znaci treba ti:
Code:

xmlhttp.send('param1=value');


posto pretpostavljam da hoces celu formu (vrednosti svih inputa) da posaljes preko ajax upita, onda ces morati krzo jedan loop da generises param=value&param=value parove, evo npr kako to sa jqueryjem mozes da napravis (dosta dugo koristim ovu bilioteku pa sam se odvikao od klasicnog DOM scriptinga)
Code:

function exaple(frm)
{
  var request;
  $(frm).find('input[type!="button"],select,textarea').each(function()
  {
      request += $(this).attr('name') + '=' + encodeURIComponent($(this).val()) + '&'
  });
  request = request.substr(0, request.length - 1);

  // ovde ti je request oblika name=value&name=value&name=value ...
}


i samo u onsubmit umesto example() stavi example(this)
 
Odgovor na temu

kazil
Robert Bašić
Full time PHP dev :)
Bačka Topola - Novi Sad

Član broj: 120044
Poruke: 686
*.cable-3.sattrakt.net.

Jabber: robertbasic@elitesecurity.org
ICQ: 446475288
Sajt: robertbasic.com


+2 Profil

icon Re: Kako da detektujem ajax request sa php?04.08.2008. u 19:04 - pre 191 meseci
@sekvoja: pa naravno da ti daje HTTP za odgovor, kada ni ne posaljes taj 't' parametar. A i postavi id atribut za to tvoje hidden polje
Code:

var podaciSaForme = "";
podaciSaForme = 't=' + document.getElementById("t").value;

xmlZahtev.onreadystatechange = stateChanged;
xmlZahtev.open("POST","process.php",true);
xmlZahtev.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlZahtev.setRequestHeader("Content-length",podaciSaForme.length);
xmlZahtev.setRequestHeader("Connection","close");
xmlZahtev.send(podaciSaForme);

naravno ovo nije ceo kod koji ti treba, prepisi tako da radi.

edit: Pretece me Aleksandar :)
 
Odgovor na temu

Aleksandar Ružičić
Software Architect, Appricot d.o.o.
Beograd

Član broj: 26939
Poruke: 2881

Jabber: krckoorascic@gmail.com
Sajt: krcko.net


+44 Profil

icon Re: Kako da detektujem ajax request sa php?04.08.2008. u 19:07 - pre 191 meseci
jednom i ja nekog da preteknem za par sekundi :)
 
Odgovor na temu

sekvoja

Član broj: 91239
Poruke: 269
*.ptt.yu.



Profil

icon Re: Kako da detektujem ajax request sa php?04.08.2008. u 19:32 - pre 191 meseci
He he, kad ne znam js :)
Sada radi, hvala obojici, pozdrav...
 
Odgovor na temu

stevs986
Nikolic Sladjan
Senior Software Developer
Alterset d.o.o
Beograd

Član broj: 121154
Poruke: 140
*.adsl-3.sezampro.yu.



+4 Profil

icon Re: Kako da detektujem ajax request sa php?11.10.2008. u 16:06 - pre 189 meseci
Citat:
kazil: @sekvoja: pa naravno da ti daje HTTP za odgovor, kada ni ne posaljes taj 't' parametar. A i postavi id atribut za to tvoje hidden polje
Code:

var podaciSaForme = "";
podaciSaForme = 't=' + document.getElementById("t").value;

xmlZahtev.onreadystatechange = stateChanged;
xmlZahtev.open("POST","process.php",true);
xmlZahtev.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlZahtev.setRequestHeader("Content-length",podaciSaForme.length);
xmlZahtev.setRequestHeader("Connection","close");
xmlZahtev.send(podaciSaForme);

naravno ovo nije ceo kod koji ti treba, prepisi tako da radi.

edit: Pretece me Aleksandar :)


Radim nesto sa ovim i naleteo sam na ovaj tvoj kod, problem koji imam je kako da odvajam podatke u promenljivoj podaciSaForme? Pokusavao sam zarezom, tacka zarez, ali bezuespeno on sve to tretira kao da je promenljia t. Znaci hocu da posaljem vise podataka sa forme...
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-1.sezampro.yu.



+33 Profil

icon Re: Kako da detektujem ajax request sa php?11.10.2008. u 17:24 - pre 189 meseci
Ako sam te dobro razumeo, ti hocesh da poshaljesh vishe parametara nekom skriptu... To radish tako shto svaki prosledjen parametar odvajash sa znakom '&'. Isto kao kad ih shaljesh metodom GET. U ovom primeru koji si citirao je vec unapred generisan string za slanje (podaciSaForme), a ti to mozhesh da odradish i drugachije, npr. za svaki podatak iz forme koji shaljesh napravish promenljive, u kojima cesh da dohvatish vrednost tih podataka, ovako:
Code:

var podatak1 = document.getElementById("prvi").value;
var podatak2 = document.getElementById("drugi").value;
var podatak3 = document.getElementById("treci").value;

...

xmlZahtev.send('prvi=' +podatak1 +'&drugi=' +podatak2 +'&treci=' +podatak3);
 
Odgovor na temu

stevs986
Nikolic Sladjan
Senior Software Developer
Alterset d.o.o
Beograd

Član broj: 121154
Poruke: 140
*.adsl-3.sezampro.yu.



+4 Profil

icon Re: Kako da detektujem ajax request sa php?11.10.2008. u 18:14 - pre 189 meseci
Lakse mi je da ih sve posaljem kroz jedan string koji dinamicki generisem u zavisnosti od nekih uslova, nego nisam znao kako da ih razdvajam.... Hvala ti puno na odgovoru... Pozdrav...
 
Odgovor na temu

[es] :: PHP :: Kako da detektujem ajax request sa php?

[ Pregleda: 2643 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.