所以我有一个AJAX项目,它使用XmlHttpRequest对象从服务器端动态检索数据(在我的情况下,我使用JSON与PHP/MySQL相关的情况下) 。几乎所有的HTML元素都是通过javascript DOM动态创建的,所以它是做这项工作的.js文件。在Internet Explorer中AJAX麻烦! (代码目前适用于Firefox和Chrome)
下面是一个典型的.js文件我用得到从PHP服务器端的信息,然后生成HTML:
var xmlHttp = createXmlHttpRequestObject();
function createXmlHttpRequestObject() {
var xmlHttp;
try {
xmlHttp = new XMLHttpRequest();
} catch(e) {
var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
"MSXML2.XMLHTTP.5.0",
"MSXML2.XMLHTTP.4.0",
"MSXML2.XMLHTTP.3.0",
"MSXML2.XMLHTTP",
"Microsoft.XMLHTTP");
for(var i = 0; i < XmlHttpVersions.length && !xmlHttp; i++) {
try {
xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
} catch(e) {}
}
}
if (!xmlHttp) alert("Error creating XmlHttpRequest object.");
else { return xmlHttp; }
}
function initialize_main() {
if (xmlHttp) {
try {
xmlHttp.open("GET", "main_php.php", true);
xmlHttp.onreadystatechange = handleMainStateChange; //call a function when the state changes
xmlHttp.send(null);
} catch(e) {
alert("Can't connect to server: " + e.toString());
}
}
}
function handleMainStateChange() {
if (xmlHttp.readyState==4) {
if (xmlHttp.status==200) {
try {
init_main();
} catch(e) {
alert("Error reading the response: " + e.toString());
}
} else {
alert("There was a problem retrieving data: " + xmlHttp.statusText);
}
}
}
function init_main() {
var data = JSON.parse(xmlHttp.responseText);
//now do stuff with the DOM or w/e
}
因此,正如我所说的一切是在Firefox和Chrome凉爽。但Internet Explorer告诉我:“读取响应时出错:TypeError:Object不支持此属性或方法”。您可能会猜到我对AJAX有点新鲜感,所以感谢您的帮助!
我会建议使用[jquery](http://jquery.com/)。 – Tapos 2011-05-23 03:05:49
I second Tapos;重新发明轮子(尤其是涉及Javascript的地方,那里存在如此多的跨浏览器不兼容)是疯狂的。使用任何库来做到这一点,但不要推出自己的。 – 2011-05-23 03:08:29