2012-02-22 62 views
0

我有一個Web用戶控件與JavaScript和CSS塊。我正在使用jQuery將其動態加載到主頁面中。如何在用戶控件加載到名爲「divTable」的div中時執行alert('haha')?如何使用jQuery將用戶控件動態加載到div後使javascript執行?

在我的.ascx文件,我有

<script type="text/javascript"> 
    function pageLoad(sender, args) { 
    alert('haha'); 
    } 
</script> 

在.aspx文件,我有

<script type="text/javascript"> 
    $(function() { 
     $('button').click(GetTable); 
    }); 

    function GetTable() { 
     debugger; 
     var id_1 = $('#txtID1').val(); 
     var id_2 = $('#txtID2').val(); 
     $.ajax({ 
      url: 'Services/Data.svc/RenderUC', 
      data: JSON.stringify({ path: 'Controls/ParameterizedTableControl.ascx', id1: id_1, id2: id_2 }), 
      type: "POST", 
      contentType: "application/json", 
      dataType: "json", 
      success: function (data) { 
       debugger; 
       $('#divTable').html(data); 
      }, 
      error: function showError(xhr, status, exc) { 
       debugger; 
       alert('error'); 
      } 
     }); 
    } 
</script> 

在.svc文件,我已經

[OperationContract] 
    public string RenderUC(string path, string id1, string id2) 
    { 
     Page pageHolder = new Page(); 
     var viewControl = (ParameterizedTableControl)pageHolder.LoadControl(path); 
     viewControl.ID1= id1 
     viewControl.ID2 = id2; 
     pageHolder.Controls.Add(viewControl); 
     StringWriter output = new StringWriter(); 
     HttpContext.Current.Server.Execute(pageHolder, output, true); 

     return output.ToString(); 
    } 

回答

1

任何您希望在ajax操作完成後運行的JavaScript應該放在成功處理程序中。

function GetTable() { 
    debugger; 
    var id_1 = $('#txtID1').val(); 
    var id_2 = $('#txtID2').val(); 
    $.ajax({ 
     url: 'Services/Data.svc/RenderUC', 
     data: JSON.stringify({ path: 'Controls/ParameterizedTableControl.ascx', id1: id_1, id2: id_2 }), 
     type: "POST", 
     contentType: "application/json", 
     dataType: "json", 
     success: function (data) { 
      debugger; 
      $('#divTable').html(data); 

      // 
      // insert whatever you want here 
      // 

     }, 
     error: function showError(xhr, status, exc) { 
      debugger; 
      alert('error'); 
     } 
    }); 
} 
+0

如果可能的話,我想JavaScript被封裝在usercontrol裏面。我寧願不移動/將它們複製到aspx頁面。 – Laguna 2012-02-22 19:12:27

+0

這可能會變得很複雜:)我想你可以在你的服務返回值中注入一個腳本標籤。 – jrummell 2012-02-22 19:14:55

1

你可以在這樣的ascx控件調用函數的<script>塊中:

<script type="text/javascript"> 
    function pageLoad(sender, args) { 
    alert('haha'); 
    } 
    pageLoad(); 
</script> 

這會讓你的腳本運行時,瀏覽器呈現腳本標籤。

+0

嗯它沒有工作。當我在divTable中注入html注入時,CSS塊在那裏,但JavaScript塊不是......想知道爲什麼。 – Laguna 2012-02-22 19:31:17

+0

嘗試使用RegisterScriptBlock或其他方法在ascx的onload事件中注入JavaScript。 – 2012-02-24 12:35:06

相關問題