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

私はあなたができないと確信しています。サーバーからクライアントに辞書または配列を送信する必要があるときに通常行うことは、文字列を作成し、配列からすべての要素を | で分離することです。あなたの場合、「one | two | three」になります。各要素で 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 に答える