ActiveXObject未定义

时间:2009-11-14 06:41:17

标签: internet-explorer firefox activex

我的程序是使用javascript在网页中获取员工详细信息。这在IE5,6,8中成功运行。但没有工作Mozilla Firefox。请帮帮我......

提前致谢

我的源代码是:


<script type="text/javascript">
<!--
var adOpenDynamic = 2;
var adLockOptimistic = 3;

/* Path of database.
*/
var strDbPath = "..\\SRVGdb.mdb";

/*
Here is the ConnectionString for Microsoft Access.
If you want to use SQL or other databases, you hav to change the connection string..
eg: SQL => var conn_str = "Provider=sqloledb; Data Source=itdev; Initial Catalog=pubs; User ID=sa;Password=yourpassword";
*/
var conn_str = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strDbPath;

function getAdoDb(strAdoType){
if (window.ActiveXObject){
return new ActiveXObject(strAdoType);
}
else{
return ActiveXObject(strAdoType);
}
}

function showReports(){
try{
var tablevar="<table width=\"100%\" border=\"1\">"
                    +"  <tr><td></td>"
                    +"  </tr>";

//Database Connection
var conn = getAdoDb("ADODB.Connection");
conn.open(conn_str, "", "");

//Recordset
var rs = new ActiveXObject("ADODB.Recordset");
strQuery = "SELECT * FROM GuestBook";
rs.open(strQuery, conn, adOpenDynamic, adLockOptimistic);

if(!rs.bof){
rs.MoveFirst();

while(!rs.eof) {

    if(document.layers){
        document.getElementById("one").open();

        document.getElementById("one").close();
    }
    else{

tablevar+="  <tr>"
                    +"    <td>"+"Sur Name: <br> Fore Name: <br> Home Address: <br> PinCode: <br> Contact Number: <br> E-mail: <br> Date of Birth: <br>  Nationality: <br> University: <br> Available Timings: <br> Interested Courses: <br> Other Courses:  <br> Expected Money:  <br> Any More Information: <br> "+"</td>"
                    +"    <td>"+rs.fields(0).value+"<br>"+rs.fields(1).value+"<br>"+rs.fields(2).value+"<br>"+rs.fields(3).value+"<br>"+rs.fields(4).value+"<br>"+rs.fields(5).value+"<br>"+rs.fields(6).value+"<br>"+rs.fields(7).value+"<br>"+rs.fields(8).value+"<br>"+rs.fields(9).value+"<br>"+rs.fields(10).value+"<br>"+rs.fields(11).value+"<br>"+rs.fields(12).value+"<br>"+rs.fields(13).value+"<br></td>"
      +"  </tr>";

    document.getElementById("one").innerHTML=tablevar;

}

    rs.MoveNext();
    }
}
else{

    if(document.layers){
        document.getElementById("one").open();

        document.getElementById("one").close();
    }
    else{

        document.all("one").innerHTML="No Records To Display.";

    }
//No Records.

}
conn.close();


tablevar+= "</table>";

}catch(ex){
alert(ex.message);
}
}

//-->
</script>

3 个答案:

答案 0 :(得分:1)

ActiveX对象是Internet Explorer专有的。您必须找到等效对象才能在其他浏览器中执行相同的功能(如果有的话)。你必须展示你正在做的事情,以便更具体地了解如何让它发挥作用。

答案 1 :(得分:0)

假设您指的是Ajax,请使用支持XMLHttpRequest的抽象XHR函数和IE特定的ActiveX对象。

/** XHConn - Simple XMLHTTP Interface - bfults@gmail.com - 2005-04-08        **
 ** Code licensed under Creative Commons Attribution-ShareAlike License      **
 ** http://creativecommons.org/licenses/by-sa/2.0/                           **/
function XHConn()
{
  var xmlhttp, bComplete = false;
  try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
  catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
  catch (e) { try { xmlhttp = new XMLHttpRequest(); }
  catch (e) { xmlhttp = false; }}}
  if (!xmlhttp) return null;
  this.connect = function(sURL, sMethod, sVars, fnDone)
  {
    if (!xmlhttp) return false;
    bComplete = false;
    sMethod = sMethod.toUpperCase();

    try {
      if (sMethod == "GET")
      {
        xmlhttp.open(sMethod, sURL+"?"+sVars, true);
        sVars = "";
      }
      else
      {
        xmlhttp.open(sMethod, sURL, true);
        xmlhttp.setRequestHeader("Method", "POST "+sURL+" HTTP/1.1");
        xmlhttp.setRequestHeader("Content-Type",
          "application/x-www-form-urlencoded");
      }
      xmlhttp.onreadystatechange = function(){
        if (xmlhttp.readyState == 4 && !bComplete)
        {
          bComplete = true;
          fnDone(xmlhttp);
        }};
      xmlhttp.send(sVars);
    }
    catch(z) { return false; }
    return true;
  };
  return this;
}


/* assuming you already have XHConn.js included in your HTML file */

var myConn = new XHConn();

if (!myConn) alert("XMLHTTP not available. Try a newer/better browser.");

var fnWhenDone = function (oXML) { alert(oXML.responseText); };

myConn.connect("mypage.php", "POST", "foo=bar&baz=qux", fnWhenDone);

答案 2 :(得分:0)

Firefox中没有ActiveX支持,无法连接到Access数据库。这些是Microsoft专有技术。

我不相信还有浏览器端的ODBC支持;关于这一点我可能是错的。

相关问题