Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用AJAX XMLHttpRequest将表单输入值发送到服务器,使用所述值执行SQL查询并返回结果_Javascript_Ajax_Asp Classic - Fatal编程技术网

Javascript 使用AJAX XMLHttpRequest将表单输入值发送到服务器,使用所述值执行SQL查询并返回结果

Javascript 使用AJAX XMLHttpRequest将表单输入值发送到服务器,使用所述值执行SQL查询并返回结果,javascript,ajax,asp-classic,Javascript,Ajax,Asp Classic,我不熟悉使用AJAX和经典ASP,希望得到一些帮助/建议 我有两个输入框,一个用于开始日期,一个用于结束日期,还有一个按钮在我的网页上。当用户输入2个日期并单击按钮时,我希望在javascript中运行一个函数,该函数使用AJAX XMLHttpRequest获取运行ASP经典脚本输入的值,并连接到我的SQL数据库。在这里,输入框中输入的值需要在我的SQL查询中使用,以确定我想要获得结果的时间段,并将结果传递回javascript 我无法让程序正确运行,我不确定问题是我的javascript代码

我不熟悉使用AJAX和经典ASP,希望得到一些帮助/建议

我有两个输入框,一个用于开始日期,一个用于结束日期,还有一个按钮在我的网页上。当用户输入2个日期并单击按钮时,我希望在javascript中运行一个函数,该函数使用AJAX XMLHttpRequest获取运行ASP经典脚本输入的值,并连接到我的SQL数据库。在这里,输入框中输入的值需要在我的SQL查询中使用,以确定我想要获得结果的时间段,并将结果传递回javascript

我无法让程序正确运行,我不确定问题是我的javascript代码还是ASP代码..还是两者都有

变量返回空白

请参阅下文:

HTML:

<div id="form_container">

<input type="text" id="sDate" name="sDate" />
<input type="text" id="eDate" name="eDate" />
<br>
<button type="button" id="btnDates" onclick="sendData()">Update</button>

<div id="results">Results here...</div>
</div>
var xmlhttp;
function sendData(sDate, eDate) {   
xmlhttp = GetXmlHttpObject();
if (xmlhttp == null) {
alert ("Your browser does not support AJAX!");
return;
}

var url = "getDates.asp?sDate="+sDate+"&eDate="+eDate;
xmlhttp.open("GET",url,true);
 xmlhttp.send(null);

xmlhttp.onreadystatechange=stateChanged 
function stateChanged() { 
if (xmlhttp.readyState==4 || xmlhttp.readyState=="complete")
{ 
document.getElementById("results").innerHTML=xmlhttp.responseText 
}}

}
<%
    Dim strPwd, strUsr
    Dim strDomain, strQuery
    Dim objConn, objComm, objRs
    Dim start_Date, end_Date

    strDomain = "..."
    strUsr = "..."
    strPwd = "..."

    start_Date = Request.QueryString("sDate")
    end_Date = Request.QueryString("eDate")

    Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.open "..."
    Set objComm = CreateObject("ADODB.Command")
    Set objComm.ActiveConnection = objConn

strQuery = "SELECT [TICKET_ID] FROM [TICKET] WHERE 
LAST_UPDATED between '"&sDate&"' and '"&eDate&"'
ORDER BY [TICKET_ID]DESC"

objComm.CommandText = strQuery
Set objRs = objComm.Execute

    Do While Not objRs.EOF
            For i = 0 To objRs.Fields.Count - 1 Step 1
                results = objRs.Fields(i)
            Next

            objRs.MoveNext
        Loop

    Response.Write("Start date: "&start_Date)
    Response.Write("End date: "&end_Date)
Response.Write("Results: "&results)

    objRs.Close
    Set objRs = nothing
    Set objConn = nothing   
    Set objComm = nothing           
%>
getDates.asp:

<div id="form_container">

<input type="text" id="sDate" name="sDate" />
<input type="text" id="eDate" name="eDate" />
<br>
<button type="button" id="btnDates" onclick="sendData()">Update</button>

<div id="results">Results here...</div>
</div>
var xmlhttp;
function sendData(sDate, eDate) {   
xmlhttp = GetXmlHttpObject();
if (xmlhttp == null) {
alert ("Your browser does not support AJAX!");
return;
}

var url = "getDates.asp?sDate="+sDate+"&eDate="+eDate;
xmlhttp.open("GET",url,true);
 xmlhttp.send(null);

xmlhttp.onreadystatechange=stateChanged 
function stateChanged() { 
if (xmlhttp.readyState==4 || xmlhttp.readyState=="complete")
{ 
document.getElementById("results").innerHTML=xmlhttp.responseText 
}}

}
<%
    Dim strPwd, strUsr
    Dim strDomain, strQuery
    Dim objConn, objComm, objRs
    Dim start_Date, end_Date

    strDomain = "..."
    strUsr = "..."
    strPwd = "..."

    start_Date = Request.QueryString("sDate")
    end_Date = Request.QueryString("eDate")

    Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.open "..."
    Set objComm = CreateObject("ADODB.Command")
    Set objComm.ActiveConnection = objConn

strQuery = "SELECT [TICKET_ID] FROM [TICKET] WHERE 
LAST_UPDATED between '"&sDate&"' and '"&eDate&"'
ORDER BY [TICKET_ID]DESC"

objComm.CommandText = strQuery
Set objRs = objComm.Execute

    Do While Not objRs.EOF
            For i = 0 To objRs.Fields.Count - 1 Step 1
                results = objRs.Fields(i)
            Next

            objRs.MoveNext
        Loop

    Response.Write("Start date: "&start_Date)
    Response.Write("End date: "&end_Date)
Response.Write("Results: "&results)

    objRs.Close
    Set objRs = nothing
    Set objConn = nothing   
    Set objComm = nothing           
%>


首先,尝试使用
响应只返回一个数据。写入
并检查返回的值是否正确这是因为
sdate
edate
参数从未填充。将
SendData()
函数绑定到
onclick
事件,但不传递值
sdate
edate
。有多种方法可以处理此问题,但我不会将
sdate
edate
传递到
SendData()
函数中,只使用
document.getElementById(“sdate”).value到文本框值。
从[TICKET]中选择[TICKET\u ID],其中上次在“&sDate&”和“&eDate&”ORDER BY[TICKET\u ID]DESC之间更新的[TICKET\u ID]
易受SQL注入攻击。改用查询。也可以通过使用提高性能。此行
results=objRs.Fields(i)
将在每次循环迭代时更新结果变量。如果您希望附加到结果变量,我建议您创建一个数组,然后使用VBScript Join函数将字符串组合在一起。