0

如何使用 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

4 回答 4

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;
}
于 2012-07-24T11:10:22.777 回答
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.NETlibrary 来执行此操作。JSON在这种情况下,您可能会返回这样的有效值

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

如果您只是获取一些数据,则可以使用该getJSON方法。

  $.getJSON("",function(msg){
      $.each(msg,function(index,item){
          alert(item)
      }); 
  });
于 2012-07-24T11:10:28.937 回答
0

答案取决于这些字符串要做什么。如果要打印它们,只需使用string.Join(", ", arr1). 如果要处理它们,最好的方法是将它们序列化为 JSON 对象(请参阅此处此处

于 2012-07-24T11:06:14.253 回答
-1

我很确定你不能。当我必须将字典或数组从服务器发送到客户端时,我通常会做什么,我创建一个字符串并使用 | 将数组中的所有元素分开。在您的情况下,它将是“一|二|三”,只需记住在每个元素上使用 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('|');
    }
于 2012-07-24T11:09:52.360 回答