从JavaScript执行位于代码后面的函数?

时间:2009-12-02 08:50:12

标签: c# asp.net javascript vb.net

我正在使用ASP.NET 3.5。

在我的代码背后,我有这个代码,我想从我的JavaScript执行。

Private Sub CreateName()

   Dim Name as String
   Name = txtName.text

End Sub

这是我的JavaScript函数

  <script type="text/javascript">

   function doSomething() { 
   document.elqFormName.action = 'http://now.eloqua.com/e/f2.aspx' 
   document.elqFormName.submit();

  }
 </script>

那么我必须在我的JavaScript函数中放置什么才能在我的代码中执行我的函数?

提前致谢!!

3 个答案:

答案 0 :(得分:0)

我不确定VB是如何工作的,但它与C#类似。我以前通过制作WebMethod并使用ajax来完成此操作。

答案 1 :(得分:0)

尽管你可以像Jimmeh所说的那样使用WebMethods,但另一个选择是使用HTML通用处理程序。在这种方法中,您的CreateName方法不在ASPX页面中,而是在ASHX页面中。

检查:

http://www.aspcode.net/Creating-an-ASHX-handler-in-ASPNET.aspx

在javascript部分的doSomething方法中,您需要使用Ajax调用ASHX。

检查:

http://docs.jquery.com/Ajax

答案 2 :(得分:0)

我有同样的问题,我发现处理它的最简单方法是使用AJAX调用。在您的ASPX页面(javascript)中:

//======================================
/* This function creates a new instance of an XMLHttpRequest object, 
   based on the users browser, and returns it  */
//======================================      
var xmlhttp
function GetXmlHttpObject()
{
    if (window.XMLHttpRequest)
      {
      // code for IE7+, Firefox, Chrome, Opera, Safari
      return new XMLHttpRequest();
      }
    if (window.ActiveXObject)
      {
      // code for IE6, IE5
      return new ActiveXObject("Microsoft.XMLHTTP");
      }
    return null;
}

//======================================
/* This function issues a request and specifies which function should handle the ajax response  */
//======================================  
function doSomething()
{
    xmlhttp = GetXmlHttpObject();
    xmlhttp.onreadystatechange=stateChanged;

    var url = "CreateName.aspx"

    xmlhttp.open("GET", url, false);
    xmlhttp.send(null);
}

//======================================
/* This function handles the ajax response text, places it in a label  */
//======================================  
function stateChanged()
{
  if (xmlhttp.readyState==4)
  {
      var returned = xmlhttp.responseText;
      document.getElementById("lbl_returnStatus").innerHTML = returned;
  }

}

然后在文件CreateName.aspx中:

<%
'Here is where you can do anything on the server side
Dim Name as String         
Name = txtName.text

'This is what will be passed back and handled by the stateChanged function
Response.Write("Success!")
%>

如果需要,您还可以通过AJAX调用传递参数。由于我们正在进行的请求类型是GET,您只需将参数添加到Javascript中的URL,并使用Request.Querystring(“paramName”)函数访问服务器端。

我写了一篇关于在我的博客here上启动AJAX的更详细的帖子,如果您也想阅读它。干杯!