您好:
1.我於前端
$.ajax({
type: "POST",
url: '......', //
data: "mode=method&method=" + "do" + "¶meters=" + dataArr,
cache: false, async: false,
success: function (data) {
let sn = data[1];
let x = data[0];
let s = data[2];
let e = data[3];
result = data; //這邊回傳字串
}
});
2.C#後端
public object do(object[] objParam) { //檢查MASTER 是否重覆
.....
object ret;
ret = new object[] { 0, r_sn, r_date_s, r_date_e };
return ret;
}
3.前端AJAX
success: function (data){
}
alert(data);
卻只是 C# 後端 r_sn 的值? 其他的值 回傳不了??
4.一般C#後端可否回傳 陣列 給前端?
謝謝!
前端改寫成
$.ajax({
type: "POST",
url: '......', //
data: {
mode:method,
method:"do",
parameters:dataArr.join(',')
},
cache: false, async: false,
success: function (data) {
let sn = data[1];
let x = data[0];
let s = data[2];
let e = data[3];
result = data; //這邊回傳字串
}
});
後端取值
var params = Request.Form["parameters"].ToString().Split(new char[] { ',' });
do(params);
後端回傳陣列給前端真TMD簡單,不過你最好去Nuget下載Newtonsoft的JSON庫
後端
protected void Page_Load(object sender, EventArgs e)
{
if( Request.Form["action"]=="do"){
string[] arr = { "aaa", "bbbb","CCCC"};
Response.Write(JsonConvert.SerializeObject(arr));
Response.End();
}
}
前端
$.post({
url:"..........",
dataType:"json",
data:{
action : "do",
params : arr.join(',')
}
})
.Done(function(data){
data.forEach(function(item){
console.log(item);
})
});
您好:
謝謝,請問
object ret;
ret = new object[] { 0, r_sn, r_date_s, r_date_e };
為何回傳 只有一個欄位; 這跟AJAX前面設定有關嗎?
謝謝!
因為你前端只有送一組資料
data: "mode=method&method=do¶meters=" + dataArr
這非pairvalue,所以我才改寫成
data: {
mode:'method',
method:'do',
parameters:dataArr.join(',')
}
這樣後端的C#才看的懂你post過來的東西是如何組成的
var mode = Request.Form['mode'].ToString() ; # 'method'
var method = Request.Form['method'].ToString() # 'do'
var params = Request.Form['mode'].ToString().Split(new char[] { ',' });
do(params);
不好意思,我沒說清楚。
我是說,C# 後端,回傳
object ret;
ret = new object[] { 0, r_sn, r_date_s, r_date_e };
前端為何只有取得到 r_sn 這一個值,其他都無法取得?
謝謝!
你如何回送這個 object ret ?
我第二個例子裡就有提到用JsonConvert.SerializaObject的方法,把後端的(具名)陣列送到前端的方法啊~~~~~~
我慣用NewtonSoft.Json的理由是.......中文不會被拆成unicode看起來亂亂的
string[] arr = { "aaa", "bbbb","CCCC"};
Response.Write(JsonConvert.SerializeObject(arr));
Response.End();
您好:就是很困惑,JsonConvert.SerializeObject(arr) 回傳string。
但我 object ret;
ret = new object[] { 0, r_sn, r_date_s, r_date_e };
回傳 result = data;
他也的確可以 只取到 r_sn
後端送到前端的資型式很有限且單一,字串、文字檔、二進位檔,如果把問題縮小到前端處理資料的不是應用程式而是javascript,那只有字串有辦法處理(除非掛接其他瀏覽器擴展元件),所以json才會大行其道,至少javascript自己看的懂且有辦法把json轉換成變數、陣列、字典(dictionary)
卻只是 C# 後端 r_sn 的值? 其他的值 回傳不了??
請使用 Json.NET 套件轉成 JsonResult 回傳前端
一般C#後端可否回傳 陣列 給前端?
可以,後端回傳 Json Array , 前端再用 JSON.parse() 轉為 JS Array Object
最後,建議題主需要系統性建立後端 API + 前端 JSON 資料溝通概念,請看這篇文章 Get Started with ASP.NET Web API 2 (C#) | Microsoft Docs
比較常見的方法是傳Json字串回到前端,
前端再針對Json字串處理.
話說我前幾年的鐵人賽文章好像有寫
ASP.NET MVC網頁程式介紹
從第20天開始.