2014-09-23 53 views
0

我正在处理一个asp.net项目,并面临一个小问题,我无法从Google搜索中获得正确的示例。将C#ArrayList获取到JavaScript Array

在我的项目中我有一个名为arrayList的ArrayList()。我只想在JavaScript数组中获得这个arrayList。

我的ArrayList就像下面的代码:

C#代码:

ArrayList arrayList = new ArrayList(); 
    arrayList.Add(1); 
    arrayList.Add(2); 
    arrayList.Add(3); 

JavaScript代码:

var jsArray = new Array(); 

在这里,我需要得到C#全的ArrayList到一个名为“jsArray JavaScript数组'。

我怎样才能得到这个?

谢谢。

+2

你怎么想转让这个数组列表JS方法?从代码隐藏? – SpiderCode 2014-09-23 08:33:08

回答

1

的JavaScript object.As在ASP。网

你需要写下面的代码来返回数组。我已经警告汽车​​。长度你得到你的阵列。

第一步:aspx页面

<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     $(function() { 
      $('#Button1').click(getCars); 
     }); 

     function getCars() { 
      $.ajax({ 
       type: "Post", 
       url: "Default.aspx/GetAllCars", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function (response) { 
        var cars = response.d; 
        alert(cars.length); 
       }, 

       failure: function (msg) { 
        $('#output').text(msg); 
       } 
      }); 
     } 

    </script> 

第2步:aspx.cs页面

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.Services; 
using System.Collections; 

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 


    [WebMethod] 
    public static Array GetAllCars() 
    { 
     ArrayList arrayList = new ArrayList(); 
     arrayList.Add(1); 
     arrayList.Add(2); 
     arrayList.Add(3); 
     return arrayList.ToArray(); 
    } 

} 
+0

感谢兄弟:) @Prashant Sarvaiya – user3817516 2014-09-23 10:17:36

+0

欢迎您。 :) – 2014-09-23 12:54:29

1

你应该先转换ArrayList中以JSON,这是C#和JS理解的格式:

var json = new JavaScriptSerializer().Serialize(arrayList); 

然后,你需要一种方法来此JSON从服务器传送到前端。有2种方式:

你把它放在一个空元素在你的DOM(可以是输入控制,一个div,任何东西),然后通过你的JavaScript读出。

或者你在服务器上创建一个Web服务端点,您可以访问使用您的JavaScript。

一个可能的第三个选项是使用RegisterClientScript,但是这需要你建立你的JavaScript服务器端可以是真正棘手,不建议的东西这个复杂。

的最简单的方法是DOM,但它也是最慢的,因为它需要DOM分析,这可能是很慢。它也有点容易出错。

该网站的服务是有点难以实现,但它的2个方法更快。这也意味着您可以在JS需要时按需构建JSON,从而在您的JS尝试访问尚未存在的JS时尝试访问它,从而减少可能出现的错误。

无论如何,一旦你收到的JSON,你可以在你的JavaScript代码中使用JSON.parse()来将JSON转换为JavaScript对象。

+0

感谢兄弟的解释,现在我很清楚。 :) @ Nate Kerkhofs – user3817516 2014-09-23 10:18:25

0

您可以使用Newtonsoft库,以获得JSON string.As下面

在C#。

ArrayList arrayList = new ArrayList(); 
    arrayList.Add(1); 
    arrayList.Add(2); 
    arrayList.Add(3); 

    Newtonsoft.Json.JsonSerializer jsr = new Newtonsoft.Json.JsonSerializer(); 
    System.IO.StringWriter sw=new System.IO.StringWriter(); 
    Newtonsoft.Json.JsonTextWriter jtw = new Newtonsoft.Json.JsonTextWriter(sw); 
    jsr.Serialize(jtw, arrayList); 

    string jsArrayJSON = sw.ToString(); 

现在传递jsArrayJSON字符串JavaScript和方法按你的程序流程。

在Javascript中使用jQuery获得以下

var jsArray = jQuery.parseJSON(jsArrayJSON); 
0
For this you have to use Ajax call. 

<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     $(function() { 
      $('#Button1').click(getListofStudents); 
     }); 

     function getListofStudents() { 
      $.ajax({ 
       type: "Post", 
       url: "Default.aspx/getListofStudents", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function (response) { 
        var ListofStudents= response.d; 
        alert(ListofStudents.length); 
       }, 

       failure: function (msg) { 
        $('#lblerror').text(msg); 
       } 
      }); 
     } 

    </script> 


And then on .cs file 

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.Services; 
using System.Collections; 

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 


    [WebMethod] 
    public static Array getListofStudents() 
    { 
     ArrayList ListofStudents= new ArrayList(); 
     ListofStudents.Add("jhon"); 
     ListofStudents.Add("Shon"); 
     ListofStudents.Add("Mohan"); 
     return ListofStudents.ToArray(); 
    } 

} 


This is one of the best example of getting work from .cs file using Json Service.