Asp.Net - JQuery ajax调用按钮动作

时间:2010-07-02 20:11:07

标签: asp.net jquery ajax

假设我有以下按钮:<asp:Button ID="btnSearch" runat="server" />和以下按钮事件处理程序:

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

如何使用JQuery调用按钮事件处理程序?

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

2 个答案:

答案 0 :(得分:1)

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

<强>更新

有许多方法可以异步执行此操作。您可以将按钮设置为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调用您的页面方法。

或者,您可以拥有一个完全独立的服务,而不是代码的一部分,它封装了您的搜索逻辑,您可以通过多种方式调用它。

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

答案 1 :(得分:0)

我建议离微软的AJAX很远,因为它非常重。 jQuery有一个非常简单的实现,如果你只需要一个简单的异步回调页面方法就可以了。

另外为了节省一些麻烦,请查看“json2”库以获取所有内容的json序列化。我还没有打破它,我不得不序列化一些相当复杂的对象。 link text