Veuillez noter: les réponses suivant les termes 'use jquery' ou 'use (insert wellknown framework)' ne sont pas utiles. Des cadres tels que jquery comprend beaucoup de code supplémentaire qui n'est pas du tout nécessaire pour ce que je fais. "Mais, vous pouvez en inclure un de Google", oui c'est peut-être le cas, mais je préfère garder mon propre code. Dans cet esprit, passons au problème ....AJAX ne passant pas les variables POST dans IE7/IE8
J'ai un appel ajax qui ne passe pas les tests POST via IE7/IE8, mais seulement dans des occasions spéciales. Il semble être extrêmement aléatoire et la plupart du temps cela fonctionne.
Je me suis jeté un oeil à jquery et ne voit pas beaucoup de différence dans la façon dont cela fonctionne par rapport à celui personnalisé.
est ici la fonction ajax:
function GetXmlHttpObject(handler){
var objxml = null;
if(handler==null) {
handler = function() {}
}
var ProgID = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP", "Microsoft.XMLHTTP"];
try {
objxml = new XMLHttpRequest();
}
catch(e) {
for (var i = 0; i < ProgID.length; i++){
try {
objxml = new ActiveXObject(ProgID[i]);
}
catch(e) {
continue;
}
}
}
objxml.onreadystatechange=handler;
return objxml;
}
Une fonction qui appelle la fonction Ajax serait comme ceci:
function sample_ajax(object_type,object_id) {
var d = new Date();
var time = d.getTime();
var url= MYSITEURL + "my_ajax_script.php?timestamp="+time;
params = "object_type="+object_type+"&object_id="+object_id;
xmlHttp_comment_notifyreset = GetXmlHttpObject(sample_ajax_helper);//fails on safari 1
xmlHttp_comment_notifyreset.open("POST", url , true);
xmlHttp_comment_notifyreset.setRequestHeader("Cache-Control", "no-cache");
xmlHttp_comment_notifyreset.setRequestHeader("Cache-Control", "no-store");
xmlHttp_comment_notifyreset.setRequestHeader("Cache-Control", "must-revalidate");
xmlHttp_comment_notifyreset.setRequestHeader("Cache-Control", "post-check=0");
xmlHttp_comment_notifyreset.setRequestHeader("Cache-Control", "pre-check=0");
xmlHttp_comment_notifyreset.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
xmlHttp_comment_notifyreset.setRequestHeader("Content-Type", "application/x-www-form-URLencoded");
xmlHttp_comment_notifyreset.setRequestHeader("Content-Length", params.length);
xmlHttp_comment_notifyreset.setRequestHeader("Connection", "close");
xmlHttp_comment_notifyreset.send(params);
}
Je suis allé voir jquery et ne peut pas voir beaucoup de différence dans la Cela fonctionne de façon comparable à celle personnalisée.
Personne n'a des suggestions? – David
Pourriez-vous s'il vous plaît donner un exemple de code de votre fonction de gestionnaire. –
Si "If-Modified-Since" est un en-tête valide pour POST?, Vous devriez peut-être le supprimer. – naikus