2014-02-12 17 views
0

我有这样如何执行JavaScript字符串变量中的脚本?

var str = "<!-- START Script Block for Chart Expense --> 
    <div id='ExpenseDiv' align='center'> 
    Chart. 
    </div> 
    <script type="text/javascript"> 
    var chart_Expense = new FusionCharts("../FusionCharts/FCF_Doughnut2D.swf", "Expense", "500", "350", "0", "0"); 
    chart_Expense.setDataXML("<graph caption='Expense' numberPrefix='' formatNumberScale='0' decimalPrecision='0'><set name='February' value='15.2' /><set name='April' value='716468.68' /><set name='May' value='541645.18' /><set name='June' value='681415.5' /><set name='July' value='575417.99' /><set name='August' value='436200.21' /><set name='September' value='159725' /><set name='November' value='0.53' /><set name='December' value='54.7' /></graph>"); 
    chart_Expense.render("ExpenseDiv"); 
     </script> 
     <!-- END Script Block for Chart Expense -->" 

我想在JavaScript方面这是在JavaScript字符串变量exequte这个脚本,并在页面控件的一个它的结果追加javascript变量。 这意味着这个字符串的脚本块有功能“chart_Expense.setDataXML”和“chart_Expense.render”,我想在客户端执行这个功能。

我现有的代码如下

JavaScript端

function RebindChart() { 
     var ddlChartType2Value = document.getElementById("ctl00_ContentPlaceHolder1_ddlChartType2").value; 
     $.ajax({ 
      type: "POST", 
      url: "DashBoardAccount.aspx/GetChatInfo", 
      contentType: 'application/json; charset=utf-8', 
      data: "{ charttype: '" + ddlChartType2Value + "' }", 
      dataType: 'json', 
      cache: false, 
      success: function (result) { 
       document.getElementById('ctl00_ContentPlaceHolder1_FCLiteral2').innerHTML = result.d; 
      } 
     }); 
    } 

服务器端

[System.Web.Services.WebMethod] 
    public static string GetChatInfo(string charttype) 
    { 
     return BindExpense(charttype); // this function return string which is describe in above 
    } 
+0

首先你必须使它成为一个有效的字符串,除非第一个片段只是一个样本。如果是这样,摆脱'var foo =“' –

+0

如果你有把它保存在一个单独的js文件中的选项,你可以使用'$ .getScript()'这更容易维护,并节省自己的麻烦担心在任何地方转义单引号或双引号 – Archer

+0

将页面中的大部分js代码包含在正常情况下可能会更好,并让WebMethod返回json包含呈现图形所需的所有数据。 –

回答

0

您可以尝试使用jQuery .html()将其附加到DOM。它将评估和执行返回字符串中包含的所有内容。

这工作:

$('#ctl00_ContentPlaceHolder1_FCLiteral2').html(result.d); 

这不:

document.getElementById('ctl00_ContentPlaceHolder1_FCLiteral2').innerHTML = result.d; 

如图here

$(function() { 

    // jQuery 
    var resultJQ = "<script>alert('jQuery'); $('body').append('jQuery');<\/script>"; 
    $('body').append($('<div>').attr('id', 'scriptjq')); 
    $('#scriptjq').html(resultJQ); 

    // Javascript 
    var resultJS = "<script>alert('Javascript'); $('body').append('Javascript');<\/script>"; 
    $('body').append($('<div>').attr('id', 'scriptjs')); 
    document.getElementById('scriptjs').innerHTML = resultJS; 

}); 

希望它能帮助!

相关问题