如何从C#向客户端发送字符串数组?

时间:2012-07-24 11:03:08

标签: c# asp.net jquery

如何使用jQuery ajax技术将一个字符串数组从ASP.NET(C#)发送到javascript?

我知道如何为普通字符串执行此操作,但我需要使用字符串数组来实现它。

我可以使用' Response.Write'有一个数组?如果是的话,我该如何从客户端读取?我怎么能从那里读数组?

这是来自服务器端:

protected void Page_Load(object sender, EventArgs e)
    {

 string[] arr1 = new string[] { "one", "two", "three" };


            Response.Write(arr1);
            Response.End();

    }

这是来自客户端:

$(document).ready(function(){


$(':button').click(function(){

var text_result = "ok"

$.post('default.aspx', { text_res: text_result} , function(data){

alert("The result is: "+data);

}).error(function(){

    alert("Error is occured");

});

});


});

这不起作用(对于数组),但它适用于普通数据 非常感谢

4 个答案:

答案 0 :(得分:3)

试试这个

前端

var ID  = 1;
     $.ajax({
                        type: "POST",
                        url: "defaut.aspx/GetCoolArray",
                        data: "{ID:" + ID + "}",
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        success: function (msg) {
                            var arrayresult = new Array();
                            arrayresult = msg.d;
                            // Do whatever with this cool array
                        },
                        error: function (msg) {
                            alert(msg.status +" : "+ msg.statusText);
                        }
                    });
                }

后端

[WebMethod]
public static string[] GetCoolArray(string ID)
{
    string[] rValue = new string[2];
    rValue[0] = "Cool array element 1";
    rValue[1] = "Cool array element 2";
    return rValue;
}

答案 1 :(得分:1)

使用string.Join方法

protected void Page_Load(object sender, EventArgs e)
{
   string[] arr1 = new string[] { "one", "two", "three" };
   string result=String.Join(",",arr1);
   Response.Write(result);
   Response.End();
}

这会将结果作为"one, two, three"

发送回客户端

在您的客户端代码中,您可以获取它,然后应用split函数,您将获得一个数组。

$(function () {  
   $(':button').click(function(){
       var text_result="ok";
       $.post("@Url.Action(defaut.aspx/GetCoolArray",
                                      { text_res: text_result}function(msg) {
            var arr=msg.split(",");
            $.each(arr,function(index,item){
                   alert(item);
            });
       });
   });
});

您也可以将JSON发送给客户端。您可以使用JavaScriptSerializer / JSON.NET库来执行此操作。在这种情况下,您可以像这样返回有效的JSON

[
    "One",
    "Two",
    "three"
]

如果您只是 GETting 某些数据,则可以使用getJSON方法。

  $.getJSON("",function(msg){
      $.each(msg,function(index,item){
          alert(item)
      }); 
  });

答案 2 :(得分:0)

答案取决于与这些字符串有关的内容。如果要打印它们,请使用string.Join(", ", arr1)。如果要处理它们,最好的方法是将它们序列化为JSON对象(请参阅herehere

答案 3 :(得分:-1)

我很确定你做不到。当我必须从服务器向客户端发送字典或数组时,我通常会做什么,我创建一个字符串并将数组中的所有元素与|在你的情况下它将是“one | two | 3”只记得在每个元素上使用HttpUtility.UrlEncode(),因此它不会有一个转义字符来破坏你的数据。

    string strReturn = string.Empty;
    foreach(string strArray in arr1)
    {
       strReturn += HttpUtility.UrlEncode(strArray) + "|";
    }
    Response.Write(strReturn.Substring(0, strReturn.Length - 1);

在客户端:

    function(data) {
      data = (data || "");
      var arrData = unescape(data).split('|');
    }