2016-07-16 92 views
0

我有一个从数据库如何防止页面回发时执行javascript函数?

<script type="text/javascript"> 
    google.load("visualization", "1", { packages: ["orgchart"] }); 
    google.setOnLoadCallback(drawChart); 
    function drawChart() { 
     $.ajax({ 
      type: "POST", 
      url: "add org unit.aspx/GetChartData", 
      data: '{}', 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 

      success: function (r) { 
       var data = new google.visualization.DataTable(); 
       data.addColumn('string', 'Entity'); 
       data.addColumn('string', 'ParentEntity'); 
       data.addColumn('string', 'ToolTip'); 
       for (var i = 0; i < r.d.length; i++) { 
        var employeeId = r.d[i][0].toString(); 
        var employeeName = r.d[i][1]; 
        var designation = r.d[i][2]; 
        var reportingManager = r.d[i][3] != null ? r.d[ 
         i][3].toString() : ''; 
        data.addRows([[{ 
         v: employeeId, 
         f: '<a target="_blank" href="edit emp cv.aspx?employeeId='+employeeId+'">' + employeeName + '</a>' + '<div><span>' + designation + '</div></span>', 
        }, reportingManager, designation]]); 
       } 
       var chart = new google.visualization.OrgChart($("#chart")[0]); 
       chart.draw(data, { allowHtml: true }); 
      }, 
      failure: function (r) { 
       alert(r.d); 
      }, 
      error: function (r) { 
       alert(r.d); 
      } 
     }); 
    } 
</script> 

生成组织结构图,该Java脚本代码和C#代码,这些Web方法背后

[WebMethod] 
    public static List<object> GetChartData() 
    { 
     DataLayer.StoreDBEntities dbEntities = new DataLayer.StoreDBEntities(); 
     List<object> chartData = new List<object>(); 
     List<DataLayer.org_unit> result = dbEntities.org_unit.ToList(); 
     foreach (DataLayer.org_unit unit in result) 
     { 
      string name = unit.org_unit_type.alias + " " + unit.name; 
      string Details = ""; 

      if (unit.emp_assignment.ToArray().Length != 0) 
      { 
       List<DataLayer.emp_assignment> empAssigns = unit.emp_assignment.ToList(); 
       foreach (DataLayer.emp_assignment assign in empAssigns) 
       { 

        Details += assign.job_title.alias + ":" + assign.employee.name + "<br/>"; 
       } 
      } 
      chartData.Add(new object[] { unit.id, name, Details, unit.upper_unit_id }); 
     } 
     return chartData; 

    } 

图表再生每次回发时,页面加载 虽然我没有调用java脚本功能

如何阻止此?我要生成图表只whene比唐点击

回答

0

首先,你需要删除这个google.setOnLoadCallback(drawChart);那么你可以使用jQuery的点击这样的事件:

$(function() { 

    $('#draw-chart').click(function(event) { 
     event.preventDefault(); 
     drawChart(); 
    }); 

}); 

到HTML中添加一个按钮这样的:

<button id="draw-chart">Draw Chart</button> 
+0

非常感谢^ _^ –

+0

不客气:D –