Parametri trimiși prin AJAX (jQuery)

M-am săturat de câte ori am văzut coduri de genul:

$.get( 'ajax.php?foo=' + bar + '&baz=' + baz + '&par=' + param' , callback );

Sau, varianta mai lungă:

$.ajax({
	url : 'ajax.php?foo=' + bar + '&baz=' + baz + '&par=' + param',
	success : callback
});

Dragii moșului, varianta de mai sus, dincolo de faptul că arată oribil, este foarte greu de citit (respectiv făcut debug). Iată o variantă mult mai simplă:

$.get( 'ajax.php', {
	foo:bar,
	baz:baz,
	par:param
}, callback );

Respectiv:

$.ajax({
	url : 'ajax.php',
	data: {
		foo:bar,
		baz:baz,
		par:param
	},
	success : callback
});

Funcțiile $.get(), $.post() și $.getJSON() acceptă, contrar credinței populare, minim trei parametri: primul este URL, al doilea NU este callback, cum mulți bănuiesc, ci este un obiect și abia al treilea este callback.

Eh, nu-i așa că arată mai bine? :D

Despre procesarea pe server a request-urilor ajax

Am văzut foarte mulți – chiar și eu obișnuiam până acum vreo doi ani – să trimit cu fiecare request AJAX și un parametru extra, de genul ajax:1 (mai ales dacă implementam și o urmă de graceful degradation).

Eh, următoarea treabă nu știu dacă e specifică jQuery sau au adoptat-o toate bibliotecile, dar jQuery trimite și povestea asta cu fiecare request:

X-Requested-With	XMLHttpRequest

Ce înseamnă asta? Că în PHP poți face asta:

$is_ajax = ( strtolower( $_SERVER['HTTP_X_REQUESTED_WITH'] ) === 'xmlhttprequest' ? true : false );

Și, de exemplu, poți face o funcție să întoarcă un string JSON dacă este true sau o pagină întreagă dacă este false.

Enjoy!

4 Comentarii to “Parametri trimiși prin AJAX (jQuery)”

  1. Eu prefer sa fac direct .serialize la FORM si sa-l trimit direct :)

  2. Staicu Ionuț-Bogdan

    Păi și dacă n-ai un tag form ce faci?

  3. În principiu, dacă site-ul este facut cu Graceful Degradation în minte, va fi un tag form.

  4. $is_ajax = isset($_SERVER['HTTP_X_REQUESTED_WITH']) && 
    		strtolower( $_SERVER['HTTP_X_REQUESTED_WITH'] ) === 'xmlhttprequest';
    
Show trackbacks

Ți-a plăcut articolul? Lasă un comentariu!

You can insert code snippets using BBcode:
[js].[/js] [html].[/html] [php].[/php] [css].[/css]
You can also use some HTML tags:
<blockquote>.</blockquote> <code>.</code> <a href="">.</a> <strong>.</strong> <em>.</em>