Šta je novo?

AJAX i POST

ivan90BG

Cenjen
Učlanjen(a)
07.01.2010
Poruke
1,044
Poena
199
Ne znam više šta da radim. Hoću da Ajax-om pošaljem POST serveru i PHP-ov ugrađen $_POST niz nikako neće da se popuni podacima koje pošaljem. Probam preko standardne HTML forme, sve radi normalno. Ali ako pošaljem Ajax-om podaci stižu (proverio sam file_get_contents('php://input') funkcijom) i to pravilno, samo što se $_POST niz ne popunjava.

Jel treba nešto posebno da uradim sa XMLHttpRequest-om?

JS kod:
Kod:
var ajaxReq = new XMLHttpRequest();
var postString = "some=thing";
ajaxReq.open("POST", "code-processor.php", true);
ajaxReq.send(postString);
 
Rešeno. Treba još da se doda sledeća linija:

ajaxReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

Odnosno u header HTTP zahveta treba dodati red:

Content-type: application/x-www-form-urlencoded

Jer će samo sa time PHP automatski očitati POST koji dolazi posle header-a.
 
mogao si to lakše preko jQuery-ja:

Kod:
$.ajax({
	type: "POST",
        data="some=thing&some2=thing2",
	url: 'putanja/do/fajla.php',
	success: function(data) {
		//obrada vracenih podataka koji se nalaze u promenljivoj 'data'
	}
});

Naravno podrazumeva da u hederu fajla u kome pozivaš ajax ubaciš jQuery.js fajl.

Kod:
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
 
Poslednja izmena:
Jedno pitanje, malo offtopic: Da li je googleapis.com Google-ov servis?
 
Jeste 🙂
 
Dodao bih nešto što sam otkrio.

Slanje podataka preko POST-a je vrlo fleksibilno. U suštini ne mora ni da se poštuje sintaksa key1=value1&key2=value2&...
Može da se pošalje bilo kakav string. A PHP ima funkciju http_get_request_body() koja daje taj string, pa se on može obrađivati kako je volja. Samo onda treba izostatviti setRequestHeader("Content-type", "application/x-www-form-urlencoded"); u JavaScript-u da PHP ne bi džaba obrađivao podatke kao da su u gore pomenutoj sintaksi. MIslim da jQuery to dodaje sigurno pa se on ne može koristiti za ovaj slučaj.

Možda nekome koristi.
 
Poslednja izmena:
Najbolje je da JS salje POST a da u PHP-u hvatas $_REQUEST a da vracas JSON koji posle parsujes sa $.jsonParse() i radis sta hoces dalje na klijentskoj strani.
 
Nazad
Vrh Dno