2012-07-24 26 views
0

如何使用jQuery ajax技術將字符串數組從ASP.NET(C#)發送到JavaScript?如何從C#向客戶端發送一個字符串數組?

我知道如何做一個正常的字符串,但我需要用一個字符串數組來實現它。

我可以使用'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"); 

}); 

}); 


}); 

這是不工作(對數組),但其對正常數據 非常感謝

工作
+1

使用JSON:** HTTP://msdn.microsoft.com/en-us/library/bb299886.aspx** – 2012-07-24 11:08:38

+0

「我知道如何與普通的字符串做」 - 我不那麼當然,你確實。看起來你只是用'text/html'內容類型返回字符串(因爲你在做'Response.Write');它與返回字符串數據到javascript客戶端的**不一樣,後者通常會返回爲[JSON](http://www.json.org/)。 – 2012-07-24 11:10:35

回答

0

答案取決於這些字符串將要做什麼。如果你想打印它們,那麼只需使用string.Join(", ", arr1)。如果你想處理它們,最好的方法是將它們序列化爲一個JSON對象(參見herehere

-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('|'); 
    } 
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; 
} 
+0

+1這是迄今爲止唯一的答案,以實際得到這個權利 - 應該使用JSON! – 2012-07-24 11:12:34

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); 
      }); 
     }); 
    }); 
}); 

您也可以將DATA作爲JSON發送給客戶端。您可以使用JavaScriptSerializer/JSON.NET庫來執行此操作。在這種情況下,你可能會返回一個有效的JSON這樣

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

如果你只是越來越一些數據,你可以使用getJSON方法。

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