2017-05-01 74 views
1

如何將C#變量設置爲數組的JavaScript數組變量。 正在關注choices是數組變量。 m_lines是c#數組變量。如何從asp.net中的C#變量設置javascript變量?

<script type="text/javascript"> 
    $(document).ready(function() { 
       term = term.toLowerCase(); 
       var choices = []; 
        choices = '<%= m_lines %>'; 
       //var choices = ['aaaab', 'ActionScript', 'AppleScript', 'Asp', 'Assembly', 'BASIC', 'Batch', 'C', 'C++', 'CSS', 'Clojure', 'COBOL', 'ColdFusion', 'Erlang', 'Fortran', 'Groovy', 'Haskell', 'HTML', 'Java', 'JavaScript', 'Lisp', 'Perl', 'PHP', 'PowerShell', 'Python', 'Ruby', 'Scala', 'Scheme', 'SQL', 'TeX', 'XML']; 
    }); 
</script> 

我的實際需求是讀取一個大的文本文件(大小約3 MB)並將其分配給JavaScript數組變量。我無法從客戶端讀取文件並將其分配給JavaScript變量,因此在服務器端讀取並嘗試將其分配給客戶端變量。 文件的每一行都被用作數組項。

+0

這是什麼* *目前生產?什麼是'm_lines'? – David

+0

@David m_lines是c#數組變量。 –

+0

考慮到你的要求是在客戶端上消耗3 MB的數據,我會使用'$ .ajax'來獲取數組... – maxbeaudoin

回答

1

在關於這個問題的評論,你定義m_lines數組。這裏的一個方法可以是簡單的數組序列化到JSON:

choices = <%= JsonConvert.SerializeObject(m_lines) %>; 

這使用the Newtonsoft JSON.NET library是當然的。否則,您也可以使用JavaScriptSerializer(在System.Web.Script.Serialization)。

+0

如何在客戶端使用JsonConvert?它給出錯誤JsonConvert在當前上下文中不存在 –

+0

@viveknuna:你不使用它在客戶端,你使用它在服務器端。具體而言,您在問題中要求和證明什麼。我不確定如何在Web窗體視圖代碼中包含名稱空間,但您始終可以顯式引用完整的名稱空間:'Newtonsoft.Json.JsonConvert.SerializeObject(m_lines)'自然地,您需要對該庫的引用來使用它當然。 – David

1

試試這個 -

var choices = <% if (m_lines!= null) {Response.Write(m_lines.ToString());}%> 
0

以從您的示例腳本,這可能是:

<script type="text/javascript"> 
$(document).ready(function() { 

    term = term.toLowerCase(); 
    var choices = []; 
    choices = <%= new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(m_lines) %>; 
    //var choices = ['aaaab', 'ActionScript', 'AppleScript', 'Asp', 'Assembly', 'BASIC', 'Batch', 'C', 'C++', 'CSS', 'Clojure', 'COBOL', 'ColdFusion', 'Erlang', 'Fortran', 'Groovy', 'Haskell', 'HTML', 'Java', 'JavaScript', 'Lisp', 'Perl', 'PHP', 'PowerShell', 'Python', 'Ruby', 'Scala', 'Scheme', 'SQL', 'TeX', 'XML']; 
}); 

或者,如果這是一個逗號分隔的文本文件,並在客戶端,你可以使用JavaScript,喜歡的事閱讀:

// <input name="myfile" id="myfile" type="file" /> 
$("#myfile").on('change', function() { 

    var file = this.files[0]; 
    // Some validations 
    console.log(file.name); 
    console.log(file.size) 

    var FileReader = new window.FileReader(); 
    reader.onload = function (event) { 
     // The file's text will be in event.target.result 
     //console.log(event.target.result) 
     var fileContentArray = event.target.result.split(/\r\n|\r|\n/g); // split by newlines 

     // Use the file content in fileContentArray 
    }; 

    reader.readAsText(file); 
}); 

參見:https://developer.mozilla.org/en-US/docs/Web/API/FileReader