我必须使用asp页面,在选择器更改时我将ajax发送到其他asp页面,并希望从该asp页面获取变量。
的index.asp
<div id="ExSearch" name="ExSearch" >
<script>
$(function() {
$('div.selector select').on('change', onValueChange);
var sIndex = 2;
var Vb_sIndex;
Vb_sIndex = <%=Vb_sIndex_geted%> ' How to do that?
function onValueChange() {
sIndex = sIndex + 1;
$.ajax({
url: '/Functions/ExSearch.asp',
type: 'POST',
data: 'startIndex=' + sIndex + '',
dataType: 'text',
success: function (data) {
$("#ExSearch").html(data);
}
});
};
});
</script>
<%= Vb_sIndex%>
ExSearch.asp
<% Vb_sIndex_geted = Request.form("startIndex") + 1
Response.Write = Vb_sIndex_geted ' for first click it = 4,how to assign this value to index.asp?
%>
如何在ExSearch.asp中设置index.asp中的Vb_sIndex?
答案 0 :(得分:1)
<%...%>
部分之后,AJAX运行客户端,因此您无法将AJAX中的值返回到服务器端变量(没有一些)额外的工作,无论如何)。
此外,您在示例中混合了客户端和服务器端代码。 Vb_sIndex
在客户端jQuery函数中声明,但您尝试在服务器端ASP标记中使用它<%= Vb_sIndex%>
。这不会起作用。当ASP处理<%= Vb_sIndex%>
时,您将收到错误(如果声明Option Explicit
)或空值(如果没有)。
如果要将AJAX调用的返回值分配给服务器端变量,请考虑在AJAX success
函数中创建并提交表单,并将data
作为隐藏表单变量传递。这样的事情应该有效:
$.ajax({
....
success: function (data) {
$('<form method="post" action="index.asp"><input type="hidden" name="h" value="' + data + '"></form>').appendTo('body').submit();
}
}
然后,当您的网页重新加载时,您可以从Form
集合中提取值:
<%
Dim Vb_sIndex
Vb_sIndex = Request.Form("h")
%>