Asp.Net - JQuery的AJAX调用按钮动作
问题描述:
让说我得到了以下按钮:<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调用。我不想模拟点击,但点击按钮事件处理程序是调用。
答
$("#<%= 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调用你的页面方法。或者,你可以有一个完全独立的服务,而不是你背后的代码的一部分,它封装了你的搜索逻辑,你可以任意调用它。
由于你已经更新了你的问题,你的问题并不在于如何执行按钮的点击处理程序,而是关于如何执行异步操作。这有点模糊。有一百万种方法可以做到这一点。
答
我会建议远离微软的AJAX,因为它真的很重。 jQuery有一个非常简单的实现,如果你只需要一个简单的异步回调pagemethods是要走的路。
同样为了节省你的自己的一些麻烦检查出“json2”库的json序列化的一切。我还没有把它打破,我不得不序列化一些相当复杂的对象。 link text