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

问题描述:

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

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       


%> 
+0

定义“它不工作”。你期望它的作用是什么?它实际上做了什么? – MaxArt 2012-07-28 09:13:26

+0

当我包含这些代码时,我的页面不显示任何内容,但是当我排除它或为我的sql查询定义“requestid”的确切值时,它的作品 – SyntaxError 2012-07-28 09:16:43

+0

您能告诉我们您的页面实际与服务器交谈的方式吗?它看起来像你可能有一个表单,做POST?是对的吗?你能向我们展示表单的HTML吗?以及如何以及何时设置JavaScript变量? – 2012-07-28 10:04:07

我想你在这里缺少一些基本的东西。我想这是一个.asp页面的一部分。

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

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

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

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

小费

在您的例子,你可以用的SQLQuery和sqlQuery2做掉,只是使用了一个。与sRecords和sRecords2一样,只需要一个。没有必要为每个任务填充两个变量。在这样的小循环中,这不会产生太大的影响,但最好保存代码&资源。