【发布时间】:2010-02-22 16:55:30
【问题描述】:
大家好,这个网站的新手,但我是忠实粉丝。 对的问题。我们注意到,有时在 Internet Explorer 上 post 变量无法通过。 这是我们的基本ajax函数
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 问题。
我认为这可能是缓存问题。但是我们所做的是我们有一个 function.js 文件,但是每当我们进行更改时,我们都会更改最后更改的时间戳并使用 htaccess 来获取似乎可以工作的新文件。由于 IE 等将文件视为缓存中的新文件。
P.S 我们不能使用 JQuery 或任何其他框架,因为它们太大而无法为我们的会员下载。
感谢您的帮助。 理查德
【问题讨论】:
-
天啊。停止。把那个代码扔掉。为此使用用户代理检测绝对是疯狂的。要么使用对象检测(如jibbering.com/2002/4/httprequest.html,但不使用全局变量),要么使用诸如developer.yahoo.com/yui/connection 或api.jquery.com/category/ajax 之类的库——至于“对于您的成员来说太大”的库——您的站点是否使用任何图形?如果是这样,就为一个像样的图书馆牺牲一个。
-
“对于我们的会员来说下载太大”是一个废话。为正确的工作使用正确的工具,或者根本不这样做。
-
你可以在单行中拥有一个完美的跨浏览器getXMLHttpRequest;不需要一个完整的框架。但是,是的,这里的浏览器嗅探是一场灾难。
-
公平竞争的家伙。是的,我在这里找到了一个很好的光滑的
-
函数 GetXmlHttpObject(handler){ var objxml = null; var ProgID = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP", "Microsoft.XMLHTTP"];尝试 { objxml = new XMLHttpRequest(); } catch(e) { for (var i = 0; i
标签: php javascript ajax internet-explorer