|zyciis| 一个XMLHTTP谁帮我改一下在FireFox里面可以用,真搞不懂为什么要有FireFox有IE不就得了 呵呵 SF IE搞的是自己的那套 希望在IE8+以后分歧越来越少 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");这个语句在FF下就不行吧,在IE下也分版本建议参考Ajax的js文件 function newXMLHttpRequest() { var xmlreq = null; if (window.XMLHttpRequest) { // 非Microsoft browsers的情况 xmlreq = new XMLHttpRequest(); } else if (window.ActiveXObject) { // Microsoft browsers的情况 try { xmlreq = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e1) { try { xmlreq = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e2) { xmlreq = null; } } } if (xmlreq == null) { alert("XMLHTTPRequest生成失败了!!O(∩_∩)O哈哈~"); } return xmlreq;} RE:APOLLO_TS----------------------问题是IE和FireFox中的xmlhttp.open("POST","TeamCustomerAjaxPrice.aspx?cth=" + cth + "&iRow="+ iRow,true);xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');xmlhttp.send(null);xmlhttp.onreadystatechange=function() { if ( xmlhttp.readyState==4 || xmlhttp.readyState=='complete' ) { if("" != xmlhttp.responseText) { obj.innerHTML=xmlhttp.responseText; } }} 这些语法是否相同? var xmlhttp = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest() onreadystatechange readstate基本不兼容FF目前最新版的FF不清楚--一直没有用FF用jquery可以很好的解决你的问题! function CustomerAjaxPrice(){ $.ajax({ type: 'POST',//URL方式为POST url: 'CustomerAjaxPrice.aspx',//这里是指向登录验证的页面 data:'cth ='+'cth'+'& iRow ='+iRow,//把要验证的参数传过去 dataType:'XML',//数据类型为XML格式的验证 //在发送数据之前要运行的函数 beforeSend:function(){ 自己写吧! }, success:function(xml) { } });} //Create xmlHttp projectfunction CreateXmlHttp(){ try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { try { xmlHttp = new XMLHttpRequest(); } catch (e) { xmlHttp = false; }}}}//readyState,status,在FF中有大小写区别if (xmlHttp.readyState == 4){ if(xmlHttp.status==200) { }} 写成个方法,方便调用function GetXmlHttpObject(){ var xmlHttp=null; try { // Firefox, Opera 8.0+, Safari xmlHttp=new XMLHttpRequest(); } catch (e) { // Internet Explorer try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); } } return xmlHttp;} 用框架或下面这个,各浏览器均支持,而且可以满足同时多个XMLHTTP请求的需要。var XMLHttp = { _objPool: [], _getInstance: function (){ for (var i = 0; i < this._objPool.length; i ++){ if (this._objPool[i].readyState == 0 || this._objPool[i].readyState == 4){ return this._objPool[i]; } } // IE5中不支持push方法 this._objPool[this._objPool.length] = this._createObj(); return this._objPool[this._objPool.length - 1]; }, _createObj: function (){ if (window.XMLHttpRequest){ var objXMLHttp = new XMLHttpRequest(); }else{ var MSXML = ['Microsoft.XMLHTTP', 'MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP']; for(var n=0; n<MSXML.length; n++){ try{ var objXMLHttp = new ActiveXObject(MSXML[n]); break; }catch(e){} } } // mozilla某些版本没有readyState属性 if (objXMLHttp.readyState == null){ objXMLHttp.readyState = 0; objXMLHttp.addEventListener("load", function (){ objXMLHttp.readyState = 4; if(typeof objXMLHttp.onreadystatechange == "function"){objXMLHttp.onreadystatechange();} }, false); } return objXMLHttp; }, // 发送请求(方法[post,get], 地址, 数据, 回调函数) sendReq: function (method, url, data, callback){ var objXMLHttp = this._getInstance(); var mode = arguments.length > 4 ? arguments[4] : true; with(objXMLHttp){ try{ // 加随机数防止缓存 if (url.indexOf("?") > 0){url += "&randnum=" + Math.random();} else{url += "?randnum=" + Math.random();} open(method, url, mode); // 设定请求编码方式 setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); send(data); if(mode){ //异步则判断readyState状态 onreadystatechange = function (){ if (objXMLHttp.readyState == 4 && (objXMLHttp.status == 200 || objXMLHttp.status == 304)){ callback(objXMLHttp); } } }else{ //同步则直接回调 if (objXMLHttp.readyState == 4 && (objXMLHttp.status == 200 || objXMLHttp.status == 304)){ callback(objXMLHttp); } } }catch(e){alert(e);} } }} 调用的时候只需要function doPageLoad(){ if(arguments.length == 0){ var url = "../../app/trade/InitPage.asp"; XMLHttp.sendReq("POST", url, "", doPageLoad); }else{ var xml = arguments[0].responseXML; //以下略 } 在new 一个xmlHttp的对象时候 IE与Firefox 是不同的。可以写成一个方法function createXmlHttp(){ var Try={ these: function(){ var returnValue; for (var i=0; i<arguments.length; i++){ var lambda=arguments[i]; try { returnValue=lambda(); break; } catch(e){} } return returnValue; } } var xmlHttp=Try.these( function() { return new ActiveXObject('Msxml2.XMLHTTP')}, function() { return new ActiveXObject('Microsoft.XMLHTTP')}, function() { return new XMLHttpRequest()} ) || false; return xmlHttp;}需要的时候调用createXmlHttp()就行了xmlhttp.onreadystatechange=function(){ if (xmlhttp.readyState==4){ if (xmlhttp.status==200){ ...... } } }ff3 ie7 ie6测试过,基本通用 input type=text获取焦点时全选已输入的内容,使用input的onfocus=this.select()在IE下无效 求一个js,很简单 纯JS ,发一个区块切换效果,欢迎修改 再续昨天的话题,继续学习。。。 jasperreport 子报表数据源 不用循环怎么判断二进制数中1的个数 checkBox的checked的值的一个狂诡异的问题,高手进 为什么这段代码不可以在IE5.0下招行,请指正。。 其实不然.......... 如何将一堆参数转化成Unicode编码(在线等待....) 如何得到ListView摸板中的控件? js xml selectNodes 左匹配怎么写?
var xmlreq = null;
if (window.XMLHttpRequest) {
// 非Microsoft browsers的情况
xmlreq = new XMLHttpRequest();
} else if (window.ActiveXObject) {
// Microsoft browsers的情况
try {
xmlreq = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e1) {
try {
xmlreq = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
xmlreq = null;
}
}
}
if (xmlreq == null) {
alert("XMLHTTPRequest生成失败了!!O(∩_∩)O哈哈~");
}
return xmlreq;
}
----------------------
问题是IE和FireFox中的
xmlhttp.open("POST","TeamCustomerAjaxPrice.aspx?cth=" + cth + "&iRow="+ iRow,true);
xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xmlhttp.send(null);
xmlhttp.onreadystatechange=function()
{
if ( xmlhttp.readyState==4 || xmlhttp.readyState=='complete' )
{
if("" != xmlhttp.responseText)
{
obj.innerHTML=xmlhttp.responseText;
}
}
}
这些语法是否相同?
readstate
基本不兼容FF
目前最新版的FF不清楚--一直没有用FF
用jquery可以很好的解决你的问题!
{
$.ajax({
type: 'POST',//URL方式为POST
url: 'CustomerAjaxPrice.aspx',//这里是指向登录验证的页面
data:'cth ='+'cth'+'& iRow ='+iRow,//把要验证的参数传过去
dataType:'XML',//数据类型为XML格式的验证
//在发送数据之前要运行的函数
beforeSend:function(){
自己写吧!
},
success:function(xml)
{ }
});
}
//Create xmlHttp project
function CreateXmlHttp()
{
try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); }
catch (e) { try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }
catch (e) { try { xmlHttp = new XMLHttpRequest(); }
catch (e) { xmlHttp = false; }}}
}
//readyState,status,在FF中有大小写区别
if (xmlHttp.readyState == 4){
if(xmlHttp.status==200)
{
}
}
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
var XMLHttp = {
_objPool: [], _getInstance: function (){
for (var i = 0; i < this._objPool.length; i ++){
if (this._objPool[i].readyState == 0 || this._objPool[i].readyState == 4){
return this._objPool[i];
}
}
// IE5中不支持push方法
this._objPool[this._objPool.length] = this._createObj();
return this._objPool[this._objPool.length - 1];
}, _createObj: function (){
if (window.XMLHttpRequest){
var objXMLHttp = new XMLHttpRequest();
}else{
var MSXML = ['Microsoft.XMLHTTP', 'MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP'];
for(var n=0; n<MSXML.length; n++){
try{
var objXMLHttp = new ActiveXObject(MSXML[n]);
break;
}catch(e){}
}
}
// mozilla某些版本没有readyState属性
if (objXMLHttp.readyState == null){
objXMLHttp.readyState = 0;
objXMLHttp.addEventListener("load", function (){
objXMLHttp.readyState = 4;
if(typeof objXMLHttp.onreadystatechange == "function"){objXMLHttp.onreadystatechange();}
}, false);
}
return objXMLHttp;
}, // 发送请求(方法[post,get], 地址, 数据, 回调函数)
sendReq: function (method, url, data, callback){
var objXMLHttp = this._getInstance();
var mode = arguments.length > 4 ? arguments[4] : true;
with(objXMLHttp){
try{
// 加随机数防止缓存
if (url.indexOf("?") > 0){url += "&randnum=" + Math.random();}
else{url += "?randnum=" + Math.random();}
open(method, url, mode);
// 设定请求编码方式
setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
send(data);
if(mode){ //异步则判断readyState状态
onreadystatechange = function (){
if (objXMLHttp.readyState == 4 && (objXMLHttp.status == 200 || objXMLHttp.status == 304)){
callback(objXMLHttp);
}
}
}else{ //同步则直接回调
if (objXMLHttp.readyState == 4 && (objXMLHttp.status == 200 || objXMLHttp.status == 304)){
callback(objXMLHttp);
}
}
}catch(e){alert(e);}
}
}
}
function doPageLoad(){
if(arguments.length == 0){
var url = "../../app/trade/InitPage.asp";
XMLHttp.sendReq("POST", url, "", doPageLoad);
}else{
var xml = arguments[0].responseXML;
//以下略
}
function createXmlHttp(){
var Try={
these: function(){
var returnValue;
for (var i=0; i<arguments.length; i++){
var lambda=arguments[i]; try { returnValue=lambda(); break; } catch(e){}
} return returnValue; } }
var xmlHttp=Try.these(
function() { return new ActiveXObject('Msxml2.XMLHTTP')},
function() { return new ActiveXObject('Microsoft.XMLHTTP')},
function() { return new XMLHttpRequest()}
) || false;
return xmlHttp;
}
需要的时候调用createXmlHttp()就行了xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4){
if (xmlhttp.status==200){
......
}
}
}
ff3 ie7 ie6测试过,基本通用