Привет, ребята, новичок на этом сайте, но большой поклонник. Правильно проблема. Мы обратили внимание, что иногда в Internet Explorer переменная post не проходит. Это наша основная функция АяксаJavascript Internet Explorer 8/7 Не публиковать в Ajax Call
function GetXmlHttpObject(handler){
var objXmlHttp=null
if (navigator.userAgent.indexOf("Opera")>=0){
xmlHttp=new XMLHttpRequest();
xmlHttp.onload=handler
xmlHttp.onerror=handler
return xmlHttp;
}
if (navigator.userAgent.indexOf("MSIE")>=0){
var strName="Msxml2.XMLHTTP"
if (navigator.appVersion.indexOf("MSIE 5.5")>=0){
strName="Microsoft.XMLHTTP"
} try {
objXmlHttp=new ActiveXObject(strName)
if(handler == null) {
handler = function() {}
}
objXmlHttp.onreadystatechange=handler
return objXmlHttp
} catch(e) {
return
}
}
if (navigator.userAgent.indexOf("Mozilla")>=0){
objXmlHttp=new XMLHttpRequest()
objXmlHttp.onload=handler
objXmlHttp.onerror=handler
return objXmlHttp
}
}
и вот вызов, который использует его
params = "object_type="+object_type+"&object_id="+object_id;
xmlHttp_comment_notifyreset = GetXmlHttpObject(notification_reset_helper);//fails on safari 1
xmlHttp_comment_notifyreset.open("POST", url , true);
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);
Право в основном на object_type, Object_ID не присылают, несмотря на то там. Как я уже сказал, это просто проблема IE7/8, которая иногда случается.
Я думал, что это может быть проблема с кешированием. Но мы делаем один файл functions.js, однако в evertime мы делаем изменение, которое мы меняем последним измененным timestamp, и используем htaccess для получения нового файла, который, похоже, работает. Поскольку IE и т. Д. Рассматривает файл как новый в своем кеше.
P.S Мы не можем использовать JQuery или любые другие фреймворки, поскольку они слишком велики для загрузки для наших пользователей.
Благодарим за помощь. Richard
Oh boy. Стоп. Бросьте этот код. Для этого абсолютно безумно использовать обнаружение агента пользователя. Либо используйте обнаружение объектов (например, http://www.jibbering.com/2002/4/httprequest.html, но без использования глобалов), либо используйте библиотеку, такую как http://developer.yahoo.com/yui/connection/ или http://api.jquery.com/category/ajax/ - поскольку для библиотек «слишком большой для ваших участников» - ваш сайт вообще использует какую-либо графику? Если да, принесите жертву за приличную библиотеку. – Quentin
«Слишком большой, чтобы скачать для наших членов» - это часть дерьма. Используйте правильные инструменты для правильных заданий или вообще не делайте этого. –
У вас может быть отличный кросс-браузер getXMLHttpRequest в однострочном режиме; нет необходимости в целостной структуре. Но да, браузерный обнюхивает здесь катастрофу. – bobince