【问题标题】:xmlHttp.responseText Unknown Error definexmlHttp.responseText 未知错误定义
【发布时间】:2012-08-30 11:15:14
【问题描述】:

我在一个 html(使用 xmlHttp.responseText)页面中创建了一个 javascript,我从一个 aspx 页面请求一个值,该页面在数据库 (MSSQL) 中查询用户名的用户编号。当我加载 html (IE8) 时,我得到了这个“未知的运行时错误行:30”。应该是什么导致了问题?需要帮忙。这是我的代码:

  1. 这是 HTML 页面和 Javascript:

       <!DOCTYPE html>
       <html>
       <head>
       <script type="text/javascript">
       function showUsernum(str)
       {
          var xmlHttp;   
           if (str=="")
       {
        document.getElementById("textExists").innerHTML="";
        return;
        }
       if (window.xmlHttpRequest)
        {// code for IE7+, Firefox, Chrome, Opera, Safari
             xmlHttp=new xmlHttpRequest();
        }
     else
        {// code for IE6, IE5
             xmlHttp=new ActiveXObject("Microsoft.xmlHttp");
        }
    
      xmlHttp.onreadystatechange=function()
       {
          if (xmlHttp.readyState==4 && xmlHttp.status==200)
          {
        //alert(str);
              document.getElementById("textExists").innerHTML=xmlHttp.responseText;
          }
       }
    
       xmlHttp.open("GET","http://localhost/Base_Data/default.aspx?q="+str,true);
       xmlHttp.send();
     }
     </script>
     </head>
     <body>
    
    <form action=""  method="post"> 
    <label>UserName
    <input type="text" name="textUser" id="textUser" onchange="showUsernum(this.value)">
    </label>
    </form>
    <br/>
    <div >
    <form name="form1" method="post" action="">
    <label>
    <div id="textExists">Exists?</div>
    </label>
    </form>
    </div>
    </body>
    

  2. 这是我的 ASP 代码。

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Expires = -1;
        SqlConnection conn;
                string connection = ConfigurationManager.ConnectionStrings ["BaseData"].ConnectionString;
                conn = new SqlConnection(connection);
                string sql = "SELECT USERNUM FROM useraccount WHERE USERNAME ='" + Request.QueryString["q"] + "'";
                SqlCommand cmd = new SqlCommand(sql, conn);
    
                conn.Open();
                string contNm = Convert.ToString(cmd.ExecuteScalar());
                Response.Write("textExists=" + contNm );
    
                conn.Close();
    
      }
    

真的很感激任何回应。谢谢。

【问题讨论】:

  • 尝试在Response.Write()Response.End(); 之前添加Response.Clear();
  • 嗨影子向导,这对我有用,谢谢!
  • 但是我有一个问题,我的html页面是否有可能用完调用asp页面的服务器?我对其进行了测试,但它不起作用..
  • 哦,对不起,它仍然有效!谢谢!这为我节省了很多时间!
  • 刷新怎么样?我怎么能在这里做。对不起,这很新。谢谢!

标签: javascript asp.net sql sql-server xmlhttprequest


【解决方案1】:

问题是您试图将整个页面(包括 &lt;html&gt; 标记和所有内容)分配到单个 DOM 元素中,而 IE 并不喜欢这样。

要让服务器只发送原始 HTML 而不发送整个文档,您需要清除响应。此外,您没有正确处理数据库对象,并且您会受到 SQL 注入攻击,因此优化的代码将是:

string connection = ConfigurationManager.ConnectionStrings ["BaseData"].ConnectionString;
using (SqlConnection conn = new SqlConnection(connection))
{
    conn.Open();
    string sql = "SELECT USERNUM FROM useraccount WHERE USERNAME=@user";
    string contNm = "";
    using (SqlCommand cmd = new SqlCommand(sql, conn))
    {
        cmd.Parameters.AddWithValue("@user", Request.QueryString["q"]);
        contNm = Convert.ToString(cmd.ExecuteScalar());
    }
    Response.Clear();
    Response.Write("textExists=" + contNm);
    Response.End();
    conn.Close();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-12
    • 1970-01-01
    • 2021-11-19
    • 2018-11-06
    • 2019-02-10
    • 1970-01-01
    • 1970-01-01
    • 2016-07-12
    相关资源
    最近更新 更多