Bug pagination ajax dans un bloc chargé avec `$.ajax()`
Bon, ça risque d'être long, désolé par avance :p
Je remarque que les variables d'environnement du type id_article[]
sont doublées lors du rechargement d'un bloc ajax paginé si ce bloc est chargé avec $.ajax()
dans la page principal.
Au premier chargement l'url chargée est du type
spip.php?page=paginer&id_article[]=135&id_article[]=134&id_article[]=132&id_article[]=128&id_article[]=127&id_article[]=124
et lors du clic sur un lien de pagination l'url chargé par l'ajax de SPIP est
spip.php?page=paginer&id_article[]=135&id_article[]=134&id_article[]=132&id_article[]=128&id_article[]=127&id_article[]=124&debut_test=3&var_ajax=1&var_ajax_env=xWJ89C7ZUU9W9DyMtWhYnK75AHSd0qm3HnMP7akXbKnn25IFaP%2BnPTJ074oPpgHExfk0VJ6gJaDZsSlOvZVbxYtkemwu%2BC6Y0b3F%2FNlSaQqlLojwd0%2Bu58T68tWo%2BQNi5V%2BkDMoPJwwUPktRfxF%2BhwM8PROE1YwwGjUyCrz3mGxyLZP9zZIPIR3oYuTaqMJRyGmFPonrBEWztIqkmd16QSqJpoIErEQZ8CqfATslpGs60kce9ynKP3j%2BjjHX8y4WyU2sYWSLfsJXEV5bjknBTdh0w0q91tT4lRhc4w%3D%3D&id_article[]=&id_article[]=&id_article[]=&id_article[]=&id_article[]=&id_article[]=&var_ajax_ancre=pagination_test&var_t=1712324509377
On remarque alors qu'on passe de 6 id_article à 12 (avec une valeur vide pour les 6 ajoutés), ce qui au bout de quelques clics (surtout si on a passé un nombre important d'id_article dans le premier chargement) génère une url trop longue qui mène à une erreur 414.
Pour reproduire, à partir d'un squelette bug.html :
<!DOCTYPE html>
<html lang="#LANG">
<head>
<title>Bug ?</title>
<meta charset="#CHARSET">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
#INSERT_HEAD
#INSERT_HEAD_CSS
</head>
<body>
<div class="infowindow"></div>
<script type="text/javascript">
;(function($){
$.ajax({
url: '#URL_PAGE{paginer}',
data: { id_article : [135,134,132,128,127,124] },
success: function(data){
$('.infowindow').append(data);
}
});
})(jQuery);
</script>
</body>
</html>
Puis dans paginer.html :
<INCLURE{fond=paginerb,id_article,ajax,env}>
Et enfin dans paginerb.html :
<BOUCLE_test(ARTICLES){id_article IN #ENV{id_article}}{pagination 3}>
#ID_ARTICLE<br>
</BOUCLE_test>
[<nav role="navigation" class="pagination">(#PAGINATION{precedent_suivant}|replace{lien_pagination,lien_pagination nohistory})</nav>]
</B_test>
[<pre>(#ENV**|unserialize|print_r{1})</pre>]