2010-03-11 90 views
1

我在我的代码页面中有一个公开的字符串。 我想从javascript中调用此方法。将参数传递给使用JavaScript的服务器方法

我想传递的参数是从ddl变化的变量。

所以我有这样的事情:

var value = document.getElementById('ddlContact').value; 
     <%=PopulateContactFields("value") %> 

这个向下传递字“值”,而不是价值的数据。

我找不出合适的语法来传递数值。

由于

+0

你正在尝试做的是不可能的。你应该阅读关于ajax。 – 2010-03-11 15:57:58

回答

0

正如其他人所说,试图直接从javascript后面访问C#代码是不可能的。

但是,您可以与它沟通间接

我认为你最好的办法是使用jQuery和[WebMethod]属性的组合。

JavaScript的使用jQuery做一个AJAX调用函数:

function Search() { 
    var search = $('#<%= ddlContact.ClientId %>').val(); 
    var options = { 
     type: "POST", 
     url: "Default.aspx/Hello", 
     data: "{'name' :'" + search + "'}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function(msg) { 
      alert(msg); 
     } 
    }; 
    $.ajax(options); 
} 

后面的代码:

public partial class _Default : System.Web.UI.Page 
{ 
    [WebMethod] 
    public void Hello(string name) 
    { 
     return "Hi " + name; 
    } 
} 
0

你是显示在生成HTML时,执行服务器侧的代码。换句话说,它会在它碰到浏览器之前执行,并且您的用户有机会对页面执行任何操作。

无论您在此使用何种语法,此时都无法访问您所需的信息 - 它尚不存在。

这里的正确方法是将此信息发送到服务器或者通过发布页面或使用AJAX,然后,对请求的尾部/响应周期做你的处理

另一种选择是做处理客户端使用Javascript