在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
%>
答
我想你在这里缺少一些基本的东西。我想这是一个.asp页面的一部分。
JavaScript是客户端语言,这意味着JavaScript代码解析和BU的浏览器所加载的网页执行。 VB部分是服务器端语言,所以它由服务器执行。客户端和服务器是两个不同的世界。您不能在服务器端代码中直接使用requestID
变量,因为它仅在客户端部分中是已知的。
因此,如果您想知道该变量的值,则必须先将其值发送到服务器。有几种方法可以这样做......通过AJAX发布表单......然后,服务器端必须有一个侦听器才能接收该值并将其存储在当前会话中。然后你可以在你的VB代码中使用它。
答
您不能在服务器端代码中使用客户端变量。但是,您可以在客户端代码中使用服务器端变量,因为服务器端代码首先执行。
您可以在这里使用Javascript的AJAX调用您的经典ASP页面,使用变量数据,获取数据库结果,然后将结果发布回页面。
小费
在您的例子,你可以用的SQLQuery和sqlQuery2做掉,只是使用了一个。与sRecords和sRecords2一样,只需要一个。没有必要为每个任务填充两个变量。在这样的小循环中,这不会产生太大的影响,但最好保存代码&资源。
定义“它不工作”。你期望它的作用是什么?它实际上做了什么? – MaxArt 2012-07-28 09:13:26
当我包含这些代码时,我的页面不显示任何内容,但是当我排除它或为我的sql查询定义“requestid”的确切值时,它的作品 – SyntaxError 2012-07-28 09:16:43
您能告诉我们您的页面实际与服务器交谈的方式吗?它看起来像你可能有一个表单,做POST?是对的吗?你能向我们展示表单的HTML吗?以及如何以及何时设置JavaScript变量? – 2012-07-28 10:04:07