从代码隐藏Web方法调用Javascript方法

时间:2011-01-25 20:52:41

标签: c# javascript asp.net code-behind

我的代码背后有一个网络方法:

[System.Web.Services.WebMethod]
public static string GetStateData(string state)
{
  //this is where i want to call a javascript method "GetItems"
}

我有一个javascript方法可以为我检索一些值,我希望在我的web方法中使用其中一个值

function GetItems() {
        var variable1= $("#<%=Item1.ClientID %> input:checked");
        var variable2= $("#<%=Item2.ClientID %>").val();
        return [variable1.text(), variable2.val(), variable2];}

我已经搜索了从web方法调用javascript方法的方法,但每次我的搜索都会导致如何从javascript调用web方法。

我确实找到了这个,但它是从一个silverlight项目的代码隐藏完成的,当我尝试添加正确的引用到我的代码隐藏时它不存在

var result = HtmlPage.Window.Invoke("GetItems");

我有遗失的参考吗?

感谢您的回复

2 个答案:

答案 0 :(得分:3)

你做不到。您通过AJAX调用web方法。您将小块信息发送到服务器上的静态方法,该方法对特定页面对象一无所知(这不是静态的)。

您要做的是将AJAX调用中的值和数据发送到web方法。你没有做一个完整的回发,所以你对页面的当前状态一无所知,除了你作为参数传递给webmethod的东西。

要么首先发送信息,要么在需要信息时返回某种标志,并让客户端使用该信息将ajax回调给另一个函数并让它从那里继续。

答案 1 :(得分:0)

不是尝试从web方法调用javascript,而是使用webmethod的返回值来决定要调用的javascript函数。

据我所知,从web方法调用javascript是不可能的 - 你需要理解服务器端和客户端代码之间的区别。