Обратите внимание: ответы в духе «использовать jquery» или «использовать (вставить хорошо известную структуру)» не помогают. Фреймворки, такие как jquery, включают в себя много дополнительного кода, который совсем не нужен для того, что я делаю. «Но вы можете включить один из Google», да, это может быть так, но я предпочитаю придерживаться своего собственного кода. Имея это в виду, давайте перейдем к проблеме ....
У меня есть вызов ajax, который не пропускает переменные POST в IE7 / IE8, но только в нечетных случаях. Похоже, что это очень случайно, и в большинстве случаев это работает.
Я посмотрел на jquery и не вижу большой разницы в его работе по сравнению с этим.
Вот функция 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;
}
Функция, которая вызывает функцию Ajax, будет выглядеть так:
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);
}
Я посмотрел на jquery и не вижу большой разницы в том, как он работает, по сравнению с этим.