如何在经典的asp,.NET和javascript之间共享变量值?
-
02-07-2019 - |
题
我在.NET C#中创建了一个IHttpHandler
,它将html片段返回到经典的asp页面。
经典的asp页面通过使用vbscript中的ServerXMLHTTP
或JavaScript中的Ajax调用通过基本的http请求与System.Web.SessionState.IRequiresSessionState
进行通信。
现在,我需要一种方法来共享我在vbscript中的变量,但不能在.NET应用程序的javascript中共享。
第一位,在经典asp和.net之间共享变量不是问题,因为我可以将它添加到http请求中。因为该变量在javascript中不可用,但在这种情况下我不能这样做。
我有一个想法,我可以将变量缓存在.NET应用程序中,并使用缓存版本进行javascript调用。但为了实现这一点,我需要一种方法来唯一地识别<!> quot; client <!> quot;在.NET ...
我尝试将<=>添加到我的HttpHandler并使用SessionId,但这不起作用,因为每次调用HttpHandler似乎都会获得一个新的ID。
我是否正确思考?我有什么选择?
解决方案
如何在页面上设置一个隐藏变量,您可以在其中存储asp页面的服务器端vb脚本中的变量值。
然后,您可以使用Javascript查询此变量,以通过您的ajax调用发送到Asp.Net处理程序。
其他提示
你可以将你的价值放在一个cookie中,然后你可以用javascript阅读并对它做任何事情,包括将它发送到.net应用程序的请求......
最后,我解决问题的方法如下:
- 我将变量与正常的ws请求一起发送到我的web服务
- 我将变量值存储在webservice上的哈希表中,并将哈希键返回给隐藏的html对象中的客户端(我使用了头
<meta>
元素) - 在javascript中,我读取了该哈希值,并将其作为标头值附加到http-request。
- 当webservice看到该hashkey时,他在持久性哈希表中查找相应的变量值。 醇>
可能不是最好的解决方案但似乎在我的情况下运作良好......
我也推荐一个cookie。您也可以从数据库加载该值,但这样做有点过分。