2014-02-12 16 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; 

}); 

希望它能幫助!

相關問題