如何使用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");
});
});
});
这不起作用(对于数组),但它适用于普通数据 非常感谢
答案 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)
答案 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('|');
}