2012-08-30 49 views
0

我已經在html(使用xmlHttp.responseText)頁面中創建一個JavaScript,其中我從查詢數據庫(MSSQL)中的用戶名的用戶號碼的aspx頁面請求一個值。當我加載的HTML(IE8),我得到這個「未知的運行時錯誤行:30」。什麼應該導致這個問題?需要幫忙。這裏是我的代碼:xmlHttp.responseText未知錯誤定義

  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(); 
    
        } 
    

真的appreaciate任何迴應。謝謝。

+0

嘗試增加'Response.Clear();在'回覆於前'() '和'Response.End();'事後。 –

+0

嗨暗影精靈,這對我的感謝! –

+0

但我有一個問題,是否有可能是我的HTML頁面用盡調用asp頁面的服務器?我測試它,它不工作.. –

回答

0

問題是,您正在嘗試將整個頁面(包括<html>標記和所有內容)分配到單個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 [email protected]"; 
    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(); 
}