AJAX调用ASP页面来更新数据库记录在IE9中只工作一次
在本论坛成员提出了几条有用的建议之后,我正在接近解决一个简单的问题。我对AJAX完全是个新手 有人能告诉我为什么这段代码在Firefox8中运行良好,但在IE9中却不行?它可以在IE中工作一次,但不能再次工作,除非我关闭浏览器并重新打开AJAX调用ASP页面来更新数据库记录在IE9中只工作一次,ajax,internet-explorer,asp-classic,Ajax,Internet Explorer,Asp Classic,在本论坛成员提出了几条有用的建议之后,我正在接近解决一个简单的问题。我对AJAX完全是个新手 有人能告诉我为什么这段代码在Firefox8中运行良好,但在IE9中却不行?它可以在IE中工作一次,但不能再次工作,除非我关闭浏览器并重新打开 <script language="javascript" type="text/javascript"> <!-- //Browser Support Code function ajaxFunction(){
<script language="javascript" type="text/javascript">
<!--
//Browser Support Code
function ajaxFunction(){
var ajaxRequest;
try {
// Opera 8.0+, Firefox, Safari
ajaxRequest = new XMLHttpRequest();
}
catch(e) {
// Internet Explorer Browsers
try {
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e) {
try {
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e){
// Something went wrong
alert("Your browser broke!");
return false;
}
}
}
// Create a function that will receive data sent from the server
ajaxRequest.onreadystatechange = function(){
if (ajaxRequest.readyState == 4) {
}
}
ajaxRequest.open("GET", "disp_processTEXT.asp", false);
ajaxRequest.send(null);
}
//-->
</script>
readystate保留为空,因为它是复制的代码,最初为div分配了一个值,但我只想在asp页面中运行数据库代码。这可能已经被删除了
要在asp页中运行的代码为
<%
Set MyConn = Server.CreateObject("ADODB.Connection")
MyConn.Open "dsn=xxx;uid=xxx;password=xxx;"
SQLString = "UPDATE dbo_tbl_printing_tempstore SET front_has_text1 = 'YES', front_text = 'help' WHERE id = 106567"
MyConn.Execute(SQLString)
MyConn.Close
Set MyConn = Nothing
%>
请帮帮我,因为这快把我逼疯了
非常感谢切换到及其Ajax系统,因为它应该是跨浏览器兼容的开箱即用系统,并为您节省大量时间:
添加jQuery的引用:
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
演示:试试这个。除了一些Opera版本外,它在所有浏览器中都对我有效
function GetXmlHttpObject(handler)
{
var objXmlHttp=null;
if(navigator.userAgent.indexOf("MSIE")>=0)
{
var strName="Msxml2.XMLHTTP";
if(navigator.appVersion.indexOf("MSIE 5.5")>=0)
{
strName="Microsoft.XMLHTTP";
}
try
{
objXmlHttp=new ActiveXObject(strName);
objXmlHttp.onreadystatechange=handler;
return objXmlHttp;
}
catch(e)
{
alert("Error. Scripting for ActiveX might be disabled");
return;
}
}
else //All other browsers
{
objXmlHttp=new XMLHttpRequest();
objXmlHttp.onload=handler;
objXmlHttp.onerror=handler;
return objXmlHttp;
}
}
var url= "http://www.example.com/";
xmlHttp=GetXmlHttpObject(stateChanged);
xmlHttp.open("GET", url , true);
xmlHttp.send(null);
谢谢你的回复。我会试试看,让你知道我进展如何。我尝试了这个,我在FF中工作得很好,但只有在IE9.akiller中第一次调用它时才工作(对不起,我已经习惯了论坛中的编辑)。我试过这个。我从一个文本区域的onblur=”“中调用它。它在FF8中工作正常,但在IE9中只工作一次。只有关闭并重新打开浏览器,它才能在IE9中再次工作。有什么想法吗?另外,当我在循环中运行的代码中留下success:alert时,你知道为什么吗?这可能是由于IE如何处理onblur事件(我不太了解)。您可以完全删除onblur属性,并将jQuery绑定到blur事件。看到我的变化上面。嗨,谢谢你的答复。我看看能不能把它用上。
$(document).ready(function() {
$('#yourinput').on('blur', function(){
$.ajax({
url: 'disp_processTEXT.asp',
success: function(response) {
alert('It worked');
}
});
});
});
function GetXmlHttpObject(handler)
{
var objXmlHttp=null;
if(navigator.userAgent.indexOf("MSIE")>=0)
{
var strName="Msxml2.XMLHTTP";
if(navigator.appVersion.indexOf("MSIE 5.5")>=0)
{
strName="Microsoft.XMLHTTP";
}
try
{
objXmlHttp=new ActiveXObject(strName);
objXmlHttp.onreadystatechange=handler;
return objXmlHttp;
}
catch(e)
{
alert("Error. Scripting for ActiveX might be disabled");
return;
}
}
else //All other browsers
{
objXmlHttp=new XMLHttpRequest();
objXmlHttp.onload=handler;
objXmlHttp.onerror=handler;
return objXmlHttp;
}
}
var url= "http://www.example.com/";
xmlHttp=GetXmlHttpObject(stateChanged);
xmlHttp.open("GET", url , true);
xmlHttp.send(null);