在异步回发上注册javascript

在异步回发上注册javascript,javascript,jquery,asp.net,asynchronous-postback,Javascript,Jquery,Asp.net,Asynchronous Postback,我在UpdatePanel中包装了一个asp.net按钮,单击它会执行异步回发并注册一些显示jquery对话框的javascript protected void btnAddData(object sender, EventArgs e) { StringBuilder jqueryDialog = new StringBuilder(); jqueryDialog.Append("$(document).ready(function() {"); jqueryDial

我在UpdatePanel中包装了一个asp.net按钮,单击它会执行异步回发并注册一些显示jquery对话框的javascript

protected void btnAddData(object sender, EventArgs e) {
    StringBuilder jqueryDialog = new StringBuilder();
    jqueryDialog.Append("$(document).ready(function() {");
    jqueryDialog.Append("RefreshData();");
    jqueryDialog.Append("$('#divData').dialog({ modal: false, draggable: true, title: 'Historical Data', width: 700 });");
    jqueryDialog.Append("});");

    ScriptManager sm = ScriptManager.GetCurrent(this);
    if (sm != null && sm.IsInAsyncPostBack) {
        ScriptManager.RegisterClientScriptBlock(
            this, typeof(Page), Guid.NewGuid().ToString(),
            jqueryDialog.ToString(), true);
    }
}
如您所见,javascript首先调用名为RefreshData()的函数,该函数作为javascript存在于我的标记中

<script type="text/javascript" language="javascript">
    if ($) {
        $(document).ready(function () {
            function RefreshData() {
                alert("Data Refreshed!");
            }
        });
    }
</script>

如果(美元){
$(文档).ready(函数(){
函数RefreshData(){
警报(“数据已刷新!”);
}
});
}
但是,Firefox给出了一个错误,表示未定义刷新数据。这是否意味着我在异步回发上注册的任何javascript都将无法使用 我在标记中定义的javascript函数


谢谢您的帮助。

不要在document.ready函数中定义
RefreshData
函数,该函数是匿名回调函数。在外部对其进行定义,以便外部可以访问:

<script type="text/javascript">
    if (typeof($) != 'undefined') {
        function RefreshData() {
            alert("Data Refreshed!");
        }
    }
</script>

typeof($)!='未定义“
?@shankarsangli,很好。我已经更新了我的答案,将其考虑到jQuery的测试中。
StringBuilder jqueryDialog = new StringBuilder();
jqueryDialog.Append("RefreshData();");
jqueryDialog.Append("$('#divData').dialog({ modal: false, draggable: true, title: 'Historical Data', width: 700 });");