我有这个ajax面板:
<telerik:RadAjaxPanel ID="rap" runat="server">
...
<-- Contains several Hidden fields -->
</telerik:RadAjaxPanel>
在我的代码后面,我有一个事件处理程序来处理面板上所有带有以下签名的ajax请求:
Private Sub rap_AjaxRequest(sender As Object, e As Telerik.Web.UI.AjaxRequestEventArgs) Handles rap.AjaxRequest
我成功地能够从这样的Javascript中调用ajax请求:
var panel = $find('<%=rap.ClientID%>');
panel.ajaxRequest();
调用ajax请求的方法需要隐藏字段之一的值,该字段在后面的代码中设置。这样做并不能正确地将值推送到客户端,因为它是异步的。我试图使用jQuery同步触发请求:
var panel = $find('<%=rap.ClientID%>');
$.ajax({
async: false,
context: panel
}).done(function() {
// Handle the rest of the function if the ajax call succeeded
});
当我单步执行代码时,我发现当我的.done函数运行时,ajax调用成功。但是,处理请求的代码中的方法永远不会被触发。如何才能通过我的代码正确触发事件处理这个调用?
答案 0 :(得分:1)
我创建了一个工作示例,展示了我“想”你想要做的事情。试试这个。
的javascript:
<script>
function submitViaAjax() {
var rap = $find('<%=rap.ClientID%>');
rap.ajaxRequest();
}
function rap_onResponseEnd(sender, arg) {
alert(document.getElementById('<%=hdnValue.ClientID%>').value);
}
</script>
ASPX
<telerik:RadAjaxPanel ID="rap" runat="server"
ClientEvents-OnResponseEnd="rap_onResponseEnd">
<asp:HiddenField ID="hdnValue" runat="server" />
<asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClientClick="return submitViaAjax();" />
</telerik:RadAjaxPanel>
代码背后的代码:
Protected Sub rap_AjaxRequest(sender As Object, e As Telerik.Web.UI.AjaxRequestEventArgs) Handles rap.AjaxRequest
hdnValue.Value = "123456"
End Sub