0

有人请帮忙。我想在我的脚本块上使用“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                        


%>  
4

2 回答 2

1

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

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

小费

在您的示例中,您可以取消 sqlQuery 和 sqlQuery2 并只使用一个。sRecords 和 sRecords2 也一样,只有一个。无需为每个任务填写两个变量。在这样的小循环中不会有太大的不同,但是节省代码和资源是一种很好的做法。

于 2012-07-29T00:17:30.810 回答
1

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

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

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

于 2012-07-28T09:23:37.260 回答