jquery $.ajax运行不正常我的调试?
今天用jquery $.ajax 发送请求,发现老是不成功,在百度和google上搜索信息,发现大部分原因是由于ie6,ie7,ie8,firefox中关于创建xmlhttprequest对象的问题,还说是由于浏览器内置native xmlhttprequest支持原因造成,关于这个问题我们可以通过修改jquery的源代码来完成.
jquery 1.3.2
xhr:function(){
return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); //源代码部分
可以修改为
return window.XMLHttpRequest? new XMLHttpRequest() : window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
当然网上还有一些别的建议,比如
方法一:
var xmlHttp;
if(window.XMLHttpRequest){
//针对Firefox, Mozillar, Opera, Safari, IE7, IE8
xmlHttp=new XMLHttpRequest();
if (xmlhttp.overrideMimeType)
xmlhttp.overrideMimeType("text/xml");
}
else if(window.ActiveXObject)
{
try{
//Firefox, Opera 8.0+, Safari
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
//Internet Explorer
try{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){
xmlHttp = false;
}
}
}
return xmlHttp;
方法二:
try{
if( window.ActiveXObject ){
for( var i = 5; i; i-- ){
try{
if( i == 2 ){
xmlhttp_request = new ActiveXObject( "Microsoft.XMLHTTP" );
}else{
xmlhttp_request = new ActiveXObject( "Msxml2.XMLHTTP." + i + ".0" );
}
xmlhttp_request.setRequestHeader("Content-Type","text/xml");
xmlhttp_request.setRequestHeader("Content-Type","gb2312");
break;}
catch(e){
xmlhttp_request = false;
}
}
}else if( window.XMLHttpRequest ){
xmlhttp_request = new XMLHttpRequest();
if (xmlhttp_request.overrideMimeType) {
xmlhttp_request.overrideMimeType(''text/xml'');
}
}
}catch(e){
xmlhttp_request = false;
}
总而言之,一定要根据浏览器的对应方式来创建:
常见的浏览器判断方式是
if (window.XMLHttpRequest) { //Mozilla, Safari,IE7,IE8
alert('Mozilla, Safari,IE7,IE8 ');
if(!window.ActiveXObject){ // Mozilla, Safari,
alert('Mozilla, Safari');
} else {
alert('IE7,IE8');
}
} else {
alert('IE6');
}
我们一定要了解这样写的原因,总而言之就是一定要根据浏览器方式来创建xmlhttprequest对象。
第二个问题:直接在vs2008环境中调试ie8,ie7 $.ajax总是报错,将整个网站部署到iis中,$.ajax运行正常,如果大家实在无法解决这个问题,可以进行部署尝试。