以下(缩短的)代码的工作方式类似于输入框上的自动完成,在输入框下方的div中输出结果。
它在Chrome / Firefox中完美运行(即搜索“Eggs”,然后“Milk”显示其结果),但是在IE中它使第一个请求很好,但它不会输出任何进一步的请求。 / p>
网络显示IE正在向服务器发出后续请求(200个头代码),但它不会对它做任何事情。
编辑:我不能使用jQuery。但可以使用YUI3(平台限制)
/* Setup Ajax */
function ajaxRequest(){var activexmodes=["Msxml2.XMLHTTP", Microsoft.XMLHTTP"],i;if(window.ActiveXObject){for(i=0; i<activexmodes.length; i++){try{return new ActiveXObject(activexmodes[i]);}catch(ignore){/*suppress error*/}}}else if (window.XMLHttpRequest){return new XMLHttpRequest();}else{return false;}}
/* Get Value of search */
var searchBoxObj = document.getElementById('searchBox-1');
/* The Ajax Request */
var theSearchValue;
var mygetrequest=new ajaxRequest();
mygetrequest.onreadystatechange=function(){
if (mygetrequest.readyState==4){
if (mygetrequest.status==200 || window.location.href.indexOf("http")==-1){
var jsondata=JSON.parse(mygetrequest.responseText), /* retrieve result as an JavaScript object */
searchData = jsondata.searches,
i;
if (searchData.length > 0){
document.getElementById('result').className = "on";
output='<ul id="searchResults">';
for (i=0; i < searchData.length; i++){
/* The Loop Code */
}
output+='</ul>';
}
else {
document.getElementById('result').className = "";
}
document.getElementById("result").innerHTML = output;
}
else{
/* alert("An error has occured making the request") */
}
}
};
/* With every key press */
var stoppedTyping;
searchBoxObj.onkeyup = function() {
if (stoppedTyping) { clearTimeout(stoppedTyping);}
stoppedTyping = setTimeout(function(){
if (searchBoxObj.value.length > 2){
theSearchValue = searchBoxObj.value;
mygetrequest.open("GET", "/asp/lookup.asp?term="+theSearchValue, true);
mygetrequest.send(null);
}
}, 200);
};
答案 0 :(得分:0)
也许您可以尝试使用jquery来处理ajax请求和填充结果div。 因为它被设计为跨浏览器并且应该正确支持IE(版本2. * jquery将仅支持版本8的IE而版本1.9。*将支持版本6的IE) 代码可能看起来像这样:
$.ajax({
type: "GET",
url: your_url
})
.done(function( data ) {
var jsondata=JSON.parse(data);
var searchData = jsondata.searches;
if (searchData.length > 0){
$('#result').attr("class","on"); //adding the class attr
output='<ul id="searchResults">';
for (var i=0; i < searchData.length; i++){
/* The Loop Code */
}
output+='</ul>';
}
else {
$('#result').attr("class","");
}
$("#result").html(output); //filling the dom with your output string
})
.fail(function() {
alert( "error" );
})
请参阅jQuery文档:https://api.jquery.com/jQuery.ajax/