2010-07-02 105 views
1

让说我得到了以下按钮:<asp:Button ID="btnSearch" runat="server" />和下面的按钮事件处理程序:Asp.Net - JQuery的AJAX调用按钮动作

Protected Sub btnSearch_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnSearch.Click 

如何,使用jQuery,我可以调用按钮事件处理程序?

我的意思是我不希望页面刷新,所以它是一种Ajax调用。我不想模拟点击,但点击按钮事件处理程序是调用。

回答

1
$("#<%= btnSearch.ClientID %>").click(); 

UPDATE

有异步这样做的许多方面。您可以将您的按钮设置为UpdatePanel的触发器,然后我的原始答案仍然可以工作。我不会那样做,但那是因为我讨厌UpdatePanels。

你可以在后面的类代码中创建一个页面的方法,就像这样:

[WebMethod] 
public static void Search() 
{ 
    // Do search 
} 

,并在您的ScriptManager(你必须添加一个,如果你没有的话),使页面方法。

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" /> 

然后,你甚至不需要你的按钮的服务器控件。只需使用普通的旧按钮。

<input type="button" onclick="search()" value="Search" /> 

// Then in javascript... 
function search() 
{ 
    PageMethods.Search(function(result) 
    { 
     // deal with search result here (this is the success handler) 
    }); 
} 

或者你可以直接从jquery,as shown by this Encosia article调用你的页面方法。或者,你可以有一个完全独立的服务,而不是你背后的代码的一部分,它封装了你的搜索逻辑,你可以任意调用它。

由于你已经更新了你的问题,你的问题并不在于如何执行按钮的点击处理程序,而是关于如何执行异步操作。这有点模糊。有一百万种方法可以做到这一点。

0

我会建议远离微软的AJAX,因为它真的很重。 jQuery有一个非常简单的实现,如果你只需要一个简单的异步回调pagemethods是要走的路。

同样为了节省你的自己的一些麻烦检查出“json2”库的json序列化的一切。我还没有把它打破,我不得不序列化一些相当复杂的对象。 link text