我在IE11和Ajax中遇到了一个特殊的错误。对于我使用下面的代码发出的几乎所有请求,一切都很好,但是当我尝试与copy + paste方法结合使用时,它会返回“访问被拒绝”错误。所以总结一下
这是AJAX代码:
function ajaxRequest(requestName,responseFunction,parameters) { var xmlhttp; if (requestName.length==0) return; if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); } else { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { if(xmlhttp.responseText == 'Error') alert('Error processing request. Please refresh the page and try again'); else if(xmlhttp.responseText != '') eval(responseFunction+"('"+xmlhttp.responseText+"')"); } } var now = new Date(); var url = "control/ajax.php?request="+requestName+"¶meters="+parameters+"×tamp"+now; xmlhttp.open("GET",url,true); xmlhttp.send(); }
一个失败的例子,设置了以下变量:
requestName:“ save_marksheet_mark”响应功能:“ update_save_marksheet_mark”参数:[60962,1284,5]
这段代码有什么问题吗?在特定情况下,IE11是否有原因会为此代码引发错误?
这个问题似乎引起了很多关注,因此以防万一有人在想,我通过在原始AJAX调用上使用setTimeout()解决了此问题。例如:
setTimeout(function() { ajaxRequest('save_mark','save_mark_completed',[60962,1284,5]) }, 1);
我假设这是IE中的某种错误。只需1毫秒!