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运行正常,如果大家实在无法解决这个问题,可以进行部署尝试。