AJAX e jQuery 1.9: le stringhe HTML

AJAX e jQuery 1.9: le stringhe HTML

jQuery 1.9 ha introdotto un radicale cambiamento nella gestione delle stringhe HTML passate al wrapper $(). Ora le stringhe HTML devono necessariamente cominciare con il carattere <. Questo riguarda anche AJAX.

Se si utilizzano i metodi AJAX occorre prestare attenzione quando l'output restituito dal server è di tipo HTML. Ad esempio la seguente marcatura non è considerata valida perché inizia con uno spazio:

  <div>Output</div>

Con i metodi $.get() e $.post() verrà automaticamente restituito un errore, in quanto questi metodi non consentono di definire in anticipo il content type della risposta.

Se non si è sicuri della validità della marcatura restituita, possiamo usare la seguente soluzione:


$.ajax({
	url: 'ajax.php',
	dataType: 'text', // non 'html'
	type: 'GET',
	data: $(this).serialize(),
	success: function(text) {
		// eliminiamo gli spazi
		var $html = $.trim(text);
		
		// convertiamo in HTML
		
		var $document = $.parseHTML($html);
		
		// usiamo l'output come un documento HTML
	
	}
});

La raccomandazione è quella di verificare sempre l'output restituito dal server. Se si utilizza PHP, occorre prestare molta attenzione ai template HTML richiamati dalla funzione include().

In WordPress occorre evitare di usare AJAX usando come destinazione la pagina corrente. Occorre invece utilizzare le action AJAX di WordPress.

Il seguente video, infine, dimostra come le stringhe HTML restituite da una richiesta AJAX debbano essere ben formate e valide prima di poter essere passate al wrapper $():

Torna su