假设我有以下按钮:<asp:Button ID="btnSearch" runat="server" />
和以下按钮事件处理程序:
Protected Sub btnSearch_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnSearch.Click
如何使用JQuery调用按钮事件处理程序?
我的意思是我不希望页面刷新,所以它是一种Ajax调用。我不想模拟点击,但点击按钮事件处理程序就是调用。
答案 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