ajax不适用于IE,但与所有其他浏览器配合良好
ajax not working with IE but working well with all other browsers
请有人告诉我为什么这段代码适用于所有浏览器 IE 的一部分,我似乎找不到问题所在,是兼容性问题还是我的代码缺少Microsoft需要的东西,这段代码旨在提交表单并从 XMLHttpRequest 对象获得响应
//defining XHR object
function createXHR() {
if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
return new XMLHttpRequest();
} else { // code for IE6, IE5
//return new ActiveXObject("Microsoft.XMLHTTP");
if (window.XMLHttpRequest) {
return new window.XMLHttpRequest;
} else {
try {
return new ActiveXObject("MSXML2.XMLHTTP.3.0");
} catch (ex) {
return null;
}
}
}
}
//function to make parameter and value pairs
function encodeNameAndValue(sName, sValue) {
var sParam = encodeURIComponent(sName);
sParam += "=";
sParam += encodeURIComponent(sValue);
return sParam;
}
//function to get the form fields
function getRequestBody(oForm) {
//array to hold the params
var aParams = new Array();
//get your reference to the form
var oForm = document.form1;
//iterate over each element in the form-
for (var i = 0; i < oForm.elements.length; i++) { //start of for loop to loop through form elements---
//get reference to the field
var oField = oForm.elements[i];
//different behavior based on the type of field----------------- switch statement---------------
switch (oField.type) {
//buttons - we don’t care
case "button":
case "submit":
case "reset":
break;
//checkboxes/radio buttons - only return the value if the control is
//checked.
case "checkbox":
case "radio":
if (!oField.checked) {
break;
}
//text/hidden/password all return the value
case "text":
case "hidden":
case "password":
aParams.push(encodeNameAndValue(oField.name, oField.value));
break;
//everything else
default:
switch (oField.tagName.toLowerCase()) {
case "select":
aParams.push(encodeNameAndValue(oField.name,
oField.options[oField.selectedIndex].value));
break;
default:
aParams.push(encodeNameAndValue(oField.name,
oField.value));
}
}
} //end of for loop
return aParams.join("&");
}
//function to make the make asynch request
function sendRequest() {
var oForm = document.form1;
var sBody = getRequestBody(oForm);
var oXHR = createXHR();
oXHR.open("post", oForm.action, true);
oXHR.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
oXHR.onreadystatechange = function () {
if (oXHR.readyState == 4) {
if (oXHR.status == 200) {
//---------------------------------------------------
saveResult(oXHR.responseText);
} else {
saveResult("An error occurred: " + oXHR.statusText);
//---------------------------------------------------
}
}
};
oXHR.send(sBody);
}
//function to send data to the display div
function saveResult(sMessage) {
var divStatus = document.getElementById("divStatus");
divStatus.innerHTML = "" + sMessage;
}
你必须编写一些特定于 ie 8 和 9 的代码
http://msdn.microsoft.com/en-us/library/dd573303%28v=vs.85%29.aspx
如果您希望它在IE中工作而无需更改代码,那么
更改 IE 设置 互联网选项 -> 安全性 ->自定义级别 ->杂项 ->跨域启用 Access 数据源
出现此问题的原因是 Activex 对象被阻止。
相关文章:
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- jquery代码在Mozilla中有效,但在其他浏览器上无效
- java脚本在Chrome和其他浏览器中对LocaleTimeString的不同行为
- Javascript的某些部分在Chrome中不起作用,但在其他浏览器中可以完美工作
- 在BoilerplateJS浏览器加载所有脚本(在其他模块中),而不考虑激活的模块
- 防止“;jQuery(html)"防止触发浏览器请求图像和其他参考内容
- 如何隐藏空<span>在IE中使用javascript.(注意,在其他浏览器中工作正常)
- 我的时间倒计时脚本在谷歌浏览器中工作正常,但在其他浏览器中打开时它显示为南楠
- 如何使用javascript从同一浏览器下的其他页面获取URL?有可能吗
- 使用一个Javascript函数提交多个表单可以在FF中工作,而不需要其他浏览器
- 带有Safari的Javascript;不起作用——所有其他浏览器都起作用
- Javascript可以在chrome中使用,但不能在其他浏览器中使用
- 有没有一种方法可以在过滤掉iOS Chrome、Firefox和其他浏览器的同时检测iOS safari
- 在其他浏览器中打开页面时,令牌未保存在$window.sessionStorage中
- 编写脚本以关闭其他选项卡或浏览器
- 无法从IE中的data.responseText获取结果,但在其他浏览器中工作
- 在Firefox中使用锤子捏 错误地定向 - 适用于所有其他浏览器
- 在IE8和其他带有javascript的浏览器中获取正文类的标准解决方案是什么
- 索引在IE中导致错误;在其他浏览器中工作
- 将JSON对象转换为敲除observable在IE8中不起作用,但在所有其他浏览器中都起作用