在javascript函数中调用vbscript方法并传递参数

时间:2021-12-29 21:27:38
我只是想通过按钮触发vbs查询语句,于是现在html中调用JS 再调用VBS中的方法,但是发现传Id 的时候不能传参数,只能传数值进去。不知道有什么方法可以解决,或者有什么参数可以让VBS和JS进行共享,在JS中进行赋值,然后再VBS里使用


<%@LANGUAGE="VBSCRIPT" CODEPAGE="950"%>
<%
Function vbs(sn)
Dim detail
sql = "SELECT * FROM table1 WHERE id = " & sn

............

detail.MoveFirst
Do Until detail.EOF
vbs = detail.Fields.Item("name").Value 
    detail.MoveNext
Loop

detail.Close()
Set detail = Nothing

End Function
%>


function xx() { 
var a = 61
alert("<%=vbs(a)%>");  //这样是错误的
alert("<%=vbs(61)%>"); //只能直接传值进去
}


<button type="button" class="btn btn-danger" onClick="xx()">Click</button>

11 个解决方案

#1


用ajax调

#2


引用 1 楼 slwsss 的回复:
用ajax调


用Ajax 调vbscript中的方法?我这里的情况是vbs js html 都在一个asp文件中

#3


都在一个页面里也可以用ajax

#4


引用 3 楼 slwsss 的回复:
都在一个页面里也可以用ajax

你是指直接把参数get到url里,vbs在用过request拿到里面的参数?

#5


是的,get post都可以 输出返回值给js就行

#6


引用 5 楼 slwsss 的回复:
是的,get post都可以 输出返回值给js就行


我这样写,但在怎么去调VBS的方法啊?这样写好像没起作用

function xx() { 
$.ajax({
url: '<%= Request.ServerVariables("SCRIPT_NAME") %>',
type: "Post",
async: false,
data: {
"vipSN": ModelInstance.sn()
},
sucess: function() {
alert("Update successful")
alert("<%=vbs()%>"); //这么调好像没起作用
},
error: function(xhr){
alert("Error occured during Ajax request, the error status is: " + xhr.status);
}
});
}


function vbs()
Dim detail
Dim detail_numRows
dim aa
aa = Request.QueryString("vipSN")

vbs = aa

end function

#7


引用 5 楼 slwsss 的回复:
是的,get post都可以 输出返回值给js就行


发现一个问题,如果用Get的话也没需要重定向到 ***.asp?vipSN=10 这样vbs的方法才能得到参数,因为我是在同一个页面里,所以需要导航到带参数的链接才可以,至于post 我不太清楚是不是也是相同的原理

#8


if request.q..(vipSN)<>null .....exec vbs ...response.end

引用 6 楼 xiaya1986 的回复:

#9


引用 8 楼 slwsss 的回复:
if request.q..(vipSN)<>null .....exec vbs ...response.end

Quote: 引用 6 楼 xiaya1986 的回复:


好像现在这么写vipSN永远都拿不到,需要重定向到带参数的链接上,是不是Post也是一样的道理?

#10


post 的用request.form
或者 url:...?a=flag 然后判断有这个标记执行..

#11


引用 10 楼 slwsss 的回复:
post 的用request.form
或者 url:...?a=flag 然后判断有这个标记执行..


恩..其实我现在碰到的问题是,button1 我按下去对本页提交了post,但是button2按下去触发本页的vbscript的方法但是拿不到post的数据

$.ajax({
url: '<%= Request.ServerVariables("SCRIPT_NAME") %>',
type: "Post",
async: false,
data: {
"vipSN": ModelInstance.sn()
},
sucess: function(result) {
alert(result);
alert("Update successful")
},
error: function(xhr){
alert("Error occured during Ajax request, the error status is: " + xhr.status);
}
});



<%

function vbs(sn)
Dim detail
Dim detail_numRows

Dim aa
Set aa = Request.Form("vipSN") //在这里并没有拿到数据,是不是因为页面没有刷新,拿不到post出来的数据?

Set detail = Server.CreateObject("ADODB.Recordset")
detail.ActiveConnection = MM_dbconn_STRING
detail.Source = "SELECT * FROM vip WHERE sn=" & sn

detail.CursorType = 0
detail.CursorLocation = 2
detail.LockType = 1
detail.Open()

detail_numRows = 0

detail.MoveFirst
Do Until detail.EOF
vbs = detail.Fields.Item("vip_name").Value
vbs = aa & "aa"
detail.MoveNext
Loop

detail.Close()
Set detail = Nothing


end function
%>

#1


用ajax调

#2


引用 1 楼 slwsss 的回复:
用ajax调


用Ajax 调vbscript中的方法?我这里的情况是vbs js html 都在一个asp文件中

#3


都在一个页面里也可以用ajax

#4


引用 3 楼 slwsss 的回复:
都在一个页面里也可以用ajax

你是指直接把参数get到url里,vbs在用过request拿到里面的参数?

#5


是的,get post都可以 输出返回值给js就行

#6


引用 5 楼 slwsss 的回复:
是的,get post都可以 输出返回值给js就行


我这样写,但在怎么去调VBS的方法啊?这样写好像没起作用

function xx() { 
$.ajax({
url: '<%= Request.ServerVariables("SCRIPT_NAME") %>',
type: "Post",
async: false,
data: {
"vipSN": ModelInstance.sn()
},
sucess: function() {
alert("Update successful")
alert("<%=vbs()%>"); //这么调好像没起作用
},
error: function(xhr){
alert("Error occured during Ajax request, the error status is: " + xhr.status);
}
});
}


function vbs()
Dim detail
Dim detail_numRows
dim aa
aa = Request.QueryString("vipSN")

vbs = aa

end function

#7


引用 5 楼 slwsss 的回复:
是的,get post都可以 输出返回值给js就行


发现一个问题,如果用Get的话也没需要重定向到 ***.asp?vipSN=10 这样vbs的方法才能得到参数,因为我是在同一个页面里,所以需要导航到带参数的链接才可以,至于post 我不太清楚是不是也是相同的原理

#8


if request.q..(vipSN)<>null .....exec vbs ...response.end

引用 6 楼 xiaya1986 的回复:

#9


引用 8 楼 slwsss 的回复:
if request.q..(vipSN)<>null .....exec vbs ...response.end

Quote: 引用 6 楼 xiaya1986 的回复:


好像现在这么写vipSN永远都拿不到,需要重定向到带参数的链接上,是不是Post也是一样的道理?

#10


post 的用request.form
或者 url:...?a=flag 然后判断有这个标记执行..

#11


引用 10 楼 slwsss 的回复:
post 的用request.form
或者 url:...?a=flag 然后判断有这个标记执行..


恩..其实我现在碰到的问题是,button1 我按下去对本页提交了post,但是button2按下去触发本页的vbscript的方法但是拿不到post的数据

$.ajax({
url: '<%= Request.ServerVariables("SCRIPT_NAME") %>',
type: "Post",
async: false,
data: {
"vipSN": ModelInstance.sn()
},
sucess: function(result) {
alert(result);
alert("Update successful")
},
error: function(xhr){
alert("Error occured during Ajax request, the error status is: " + xhr.status);
}
});



<%

function vbs(sn)
Dim detail
Dim detail_numRows

Dim aa
Set aa = Request.Form("vipSN") //在这里并没有拿到数据,是不是因为页面没有刷新,拿不到post出来的数据?

Set detail = Server.CreateObject("ADODB.Recordset")
detail.ActiveConnection = MM_dbconn_STRING
detail.Source = "SELECT * FROM vip WHERE sn=" & sn

detail.CursorType = 0
detail.CursorLocation = 2
detail.LockType = 1
detail.Open()

detail_numRows = 0

detail.MoveFirst
Do Until detail.EOF
vbs = detail.Fields.Item("vip_name").Value
vbs = aa & "aa"
detail.MoveNext
Loop

detail.Close()
Set detail = Nothing


end function
%>