在asp经典脚本块中使用的Javascript变量

时间:2012-07-28 09:09:02

标签: javascript asp-classic

有人请帮忙。我想在我的脚本块上使用“requestID”javascript变量并将其用于我的sql查询。但是当我这样做时,它不起作用。

requestID= aReqId[iSelReq];
<%
    Dim sqlQuery 
    Dim sqlQuery2
    Dim sRecords
    Dim sRecords2
    Dim iVersion1   
    Dim iFieldSeqId2
    Dim vValue
    Dim iNumofReqTypes
    Dim iLoop


    for iLoop=0 to iNumofReqTypes

        sqlQuery = "SELECT iVersion, iFieldSeqId FROM tblUsrAcntFieldsDtlMst, tblReqTypeMst WHERE tblReqTypeMst.ireqTypeID = tblUsrAcntFieldsDtlMst.iSysid and iSysID = '509' and iversion = (select max(iVersion) from tblUsrAcntFieldsDtlMst where iSysID = '509')  and cReqDisable = 'N' order by iFieldSeqId,ixCoordinate, iYCoordinate"

        sRecords = getRecords(sqlQuery,bResult)
        if bResult then
            iVersion1 = sRecords(0,iLoop)
            iFieldSeqId2 = sRecords(1,iLoop)
        end if 
        sqlQuery2 = "select vValues from tblNewUsrAcntReqDtlTxn where iReqID = " & requestID &"   and iSysID = " & SysID &" and iVersion = " & iVersion & " and iFieldSeqID = " & iFieldSeqId & ""
        bResult = false
        sRecords2 = getRecords(sqlQuery2,bResult)
        if bResult then
            vValue = sRecords2(0,0)
        end if 
    next                        


%>  

2 个答案:

答案 0 :(得分:1)

我想你在这里遗漏了一些基本的东西。我想这是.asp页面的一部分。

Javascript是客户端语言,这意味着Javascript代码将通过加载页面的浏览器进行解析和执行。 VB部分是服务器端语言,因此它由服务器执行。客户端和服务器是两个不同的世界。您无法在服务器端代码中直接使用requestID变量,因为它仅在客户端部分中已知。

因此,如果您想知道该变量的值,则必须先将其值发送给服务器。有几种方法可以这样做...通过AJAX发布表单...然后必须在服务器端有一个监听器来接收该值并将其存储在当前会话中。然后你可以在你的VB代码中使用它。

答案 1 :(得分:1)

您不能在服务器端代码中使用客户端变量。但是,您可以在客户端代码中使用服务器端变量,因为服务器端代码首先执行。

您可以在此处使用Javascript的AJAX来调用您的经典ASP页面,使用可变数据,获取数据库结果,然后将结果发布回页面。

提示

在您的示例中,您可以取消sqlQuery和sqlQuery2并使用它。与sRecords和sRecords2相同,只需要一个。无需为每个任务填充两个变量。在这样的小循环中没有太大的区别,但保存代码和保存是一个好习惯。资源。