當前位置:首頁 » 網頁前端 » 前端如何接受嵌套json
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

前端如何接受嵌套json

發布時間: 2023-03-01 06:15:52

前端這個JSP這么寫了 後端action不知道怎麼接收傳的json數組

是document.getElementsByName 吧?

另外如果是在IE9或IE9以下,無論表單元素是寫name屬性或是id屬性都會取得到值。

例如

<!doctypehtml>
<html>
<head>
<title></title>
<scripttype="text/javascript">
window.onload=function(){
varvalue=document.getElementsByName("a");
varresult=[];
for(vari=0;i<value.length;i++){
result.push(value[i].value);
}
console.log(result.join(","));
}
</script>
</head>
<body>
<inputtype="text"name="a"value="3"/>
<inputtype="text"id="a"value="2"/>
<inputtype="text"name="a"value="4"/>
<inputtype="text"name="a"value="5"/>
</body>
</html>

在當前版本的 opera,ff,chrome,IE10,IE11中獲取的值是 3,4,5,但是在IE9及IE9一下版本獲取的是 3,2,4,5.

② spring 方法怎麼接收前端傳入的json數據

1.json作為一種輕量級的數據交換格式,在前後台數據交換中占據著非常重要的地位。Json的語法非常簡單,採用的是鍵值對表示形式。
2.JSON 可以將 JavaScript 對象中表示的一組數據轉換為字元串,然後就可以在函數之間輕松地傳遞這個字元串,或者在非同步應用程序中將字元串從 Web
3.客戶機傳遞給伺服器端程序,也可以從伺服器端程序傳遞json格式的字元串給前端並由前端解釋。這個字元串是符合json語法的,而json語法又是javascript語法的子集,所以javascript很容易解釋它,而且JSON 可以表示比"名稱 / 值對"更復雜的結構。

③ 如何將數據以json格式傳給前端

將數據以json格式傳給前端:
function generateDtb() {
//寫入
var txtName = document.getElementById("txtName").value;
//創建數組
var dtb = new Array();
//通過循環把數據寫入到數組並返回
for (var i = 0; i < firstGroup.length; i++) {

var row = new Object();
row.Name = txtName;
row.fullMoney = firstGroup[i].value;
row.discount = secondGroup[i].value;
dtb.push(row);
}
return dtb;
}

把數組轉換成json串傳入到後台:
$(function () {
//點擊botton1
$("#lbtnOK").click(function () {
var url = "DiscountManger.aspx?ajax=1";
var dtb = generateDtb();
// var strName = document.getElementById("txtName").value;

if (dtb == null)
{ }
else {
//序列化對象
var postdata = JSON.stringify(dtb);
//非同步請求
$.post(url, { json: postdata }, function (json) {
if (json) {
jBox.tip("添加成功!", "提示");
location.reload();
}
else {
jBox.tip("添加失敗!", "提示");
location.reload();
}
}, "json")

}
});
});

在後台的操作:
首先判斷是否需要傳輸數據

if (!IsPostBack)
{
//判斷是否非同步請求
if (Request.QueryString["ajax"] == "1")
{
ProcessRequest();
}

在這里進行對數據的處理:
/// <summary>
/// 處理非同步請求
/// </summary>
private void ProcessRequest()
{
//存入要填寫的策略
ArrayList arrDiscount = new ArrayList();
Response.ContentType = "text/html";
string json = Request.Form["json"];
//反序列化DataTable
if (json == null)
{
return;
}
else
{
DataTable newdtb = Json2Dtb(json);
for (int i = 0; i < newdtb.Rows.Count; i++)
{
Entity.StrategyDiscount enStrategyDiscount = new Entity.StrategyDiscount();
//打折方案名
enStrategyDiscount.name = newdtb.Rows[i]["Name"].ToString();
//商店ID
enStrategyDiscount.shopId = long.Parse(LoginInfo.ShopID);

enStrategyDiscount.fullMoney = Convert.ToDecimal(newdtb.Rows[i]["fullMoney"].ToString());
enStrategyDiscount.discount = Convert.ToDecimal(newdtb.Rows[i]["discount"].ToString());
//寫入數據到數組
arrDiscount.Add(enStrategyDiscount);
}
//寫入數據到資料庫
IStrategyBLL strategy = new StrategyBLL();

if (strategy.AddStrategyDiscount(arrDiscount))
{
Response.Write("true");
Response.End();
}
else
{
Response.Write("false");
Response.End();
}

}

這里,我們需要把json轉換成datatable
/// <summary>
/// Json轉DataTable
/// </summary>
/// <param name="json"></param>
/// <returns></returns>
private DataTable Json2Dtb(string json)
{

JavaScriptSerializer jss = new JavaScriptSerializer();
ArrayList dic = jss.Deserialize<ArrayList>(json);
DataTable dtb = new DataTable();
if (dic.Count > 0)
{
foreach (Dictionary<string, object> drow in dic)
{
if (dtb.Columns.Count == 0)
{
foreach (string key in drow.Keys)
{
dtb.Columns.Add(key, drow[key].GetType());
}
}
DataRow row = dtb.NewRow();
foreach (string key in drow.Keys)
{
row[key] = drow[key];
}
dtb.Rows.Add(row);
}
}

return dtb;
}

這樣,就可以把數據無刷新的寫入到資料庫。
當然,如果我們有一個從資料庫讀取的datatable,如果通過json顯示在前台呢。
首先,我們需要把datatable轉換為json數據

/// <summary>
/// DataTable轉Json
/// </summary>
/// <param name="dtb"></param>
/// <returns></returns>
private string Dtb2Json(DataTable dtb)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
ArrayList dic = new ArrayList();
foreach (DataRow row in dtb.Rows)
{
Dictionary<string, object> drow = new Dictionary<string, object>();
foreach (DataColumn col in dtb.Columns)
{
drow.Add(col.ColumnName, row[col.ColumnName]);
}
dic.Add(drow);
}
return jss.Serialize(dic);
}

然後寫回到前台

/// <summary>
/// 處理非同步請求
/// </summary>
private void ProcessRequest()
{
Response.ContentType = "text/html";
string json = Request.Form["json"];
//反序列化DataTable
DataTable newdtb = Json2Dtb(json);
//序列化DataTable為JSON
string back = Dtb2Json(newdtb);
Response.Write(back);
Response.End();
}

在前台接受顯示:

$(function() {
//點擊botton1
$("#botton1").click(function() {
createTable(json);
});
});

//顯示Json中的數據
function createTable(json) {
var table = $("<table border='1'></table>");
for (var i = 0; i < json.length; i++) {
o1 = json[i];
var row = $("<tr></tr>");
for (key in o1) {
var td = $("<td></td>");
td.text(o1[key].toString());
td.appendTo(row);
}
row.appendTo(table);
}
table.appendTo($("#back"));
}

④ 前端向後端傳一個json數組對象

首先在前端已經獲取到這個數組對象:

後端需要接受的json數組格式:

剛開始一直想需要把數組轉成json數組,然後再傳給後端介面,
最後才發現 ajax請求會自動把數組轉成json數組 ,我們就不用再去轉一次,
但是最後發現還是報未知錯誤,經查看發現傳給後端的數據變成:0:[Object object]...
最後發現在前端向後端傳輸的數據進行定義:

可以看到當發送數據的方式是「post」的時候,如果不傳或者傳的是true,就會把發送的json數據轉成formdata對象,所以在頁面中我們可以看到發送的數據變成了:0:[Object object],1:[Object object]...
所以傳的值應該是

⑤ web前端中原生js如何獲取後端php傳遞來json

json有2種結構,一種是中括弧括起來的,是數組,可以直接用 下標獲取值
還有一種是大括弧括起來的,是對象,對象的結構是 key:value,key:value。。形勢的,
這種取值的方法是 對象名。key

如果是數組,你可以直接 對象[對象.length]="你要加入的值"
如果是對象 你可以 對象.你要加的key = "你要加入的值"