je ne suis qu'un webmaster, mais ayant pour le 2eme fois un probleme
avec les pages en ajax, j'ai poste une demande sur la liste des
utilisateurs, et d'autres personnes ont eu ce meme probleme, et l'ont
regle d'une facon peu convaincante (et qui ne me convient pas).
Donc j'ai modifie le code de spip (un tout petit peu), et je propose
d'integrer cette modif dans la prochaine version.
Voici le fil de la discution.
Excuse, mais je n'arrive pas à comprendre dans quelles circonstances tu rencontres un problème. Est-ce que tu pourrais décrire ce qui t'amène à proposer cette modification ? Quel est le problème avec les pages ajax donc ? Et quel ajax ?
Ensuite,
- Est-ce que le bug est systématique ? uniquement sur un navigateur précis ?
Si c'est un problème d'affichage en double des boutons d'admin, c'est que les pages AJAX envoient un header que SPIP suppose comme une page complète. Il faut donc que soit :
- $GLOBALS['flag_preserver'] soit à true pour le calcul du squelettes ajax (à verifier ça),
- envoyer un header tel que [(#HTTP_HEADER{Content-Type: text/html[; charset=(#CHARSET)]})] que tu peux au pire conditionner à la présence d'ajax avec [(#EVAL{_AJAX}|oui) ... ]
Oui j'avais mis le #HTTP_HEADER dans la page que j'inclues en ajax, je
vais re-essayer avec ton code.
Mais il y a une difference majeure entre ton code et le mien, ton code
est du html, pas le mien.
En effet j'utilise l'ajax dans ce cas pour charger un message texte pour
un email, et dans un autre cas pour exporter la liste des membres en
format csv (toute utilisation doit pouvoir etre possible, texte, xml ou
autre).
Anyway, je te tiendrai au courant de mon test.
Super, ca marche avec ton script et pas avec le mien, en mettant #HTTP_HEADER dans la page appelée dans les 2 cas.
Merci.
mon ancien script:
function fill_request()
{
if (document.msg_staff.emails_staff.value.length != 0)
{
$.ajax({
type: "GET",
url: "spip.php",
data:
"page=inc/texte&var_mode_ajax=1&id_article="+document.msg_staff.emails_staff.value,
dataType: "html",
success:function(data){
$("#request").text(data);}})
}
}
mon nouveau script (enfin le tien adapté a mon besoin):
function fill_request()
{
if (document.msg_staff.emails_staff.value.length != 0)
{
$.get("#URL_PAGE{inc/texte}&id_article="+document.msg_staff.emails_staff.value, function(data) {
$('#request').html(data);
});
}
}