本文目錄一覽:
- 1、後台json數據傳到前台怎麼傳
- 2、前台能不能給後台傳這樣的json數據:一個json內有個值和一個json數組 請問前台給怎麼傳,後台該怎麼接收
- 3、如何將數據以json格式傳給前端
- 4、如何在前台腳本通過json傳遞數據到後台
後台json數據傳到前台怎麼傳
假設後台傳遞到前台數據的臨時對象為json
。
var
json
=
「{……}」;
json
=
eval(‘(‘
+
json
+
‘)’);
json就對前台對象了,json.endPlncre可以拿出指定屬性
前台能不能給後台傳這樣的json數據:一個json內有個值和一個json數組 請問前台給怎麼傳,後台該怎麼接收
你很懶。
第一步,封裝json.
var jsonStr = [{‘name’:’jim’ , ‘age’:20} , {‘name’:’king’ , ‘age’:26},{‘name’:’jge’ , ‘age’:30}]
第二部,ajax。
jQuery.ajax({
type: “post”,
url: url,
dataType : ‘json’,
data : {‘mydata’:jsonStr},
success: function(data,textStatus){
alert(“操作成功”);
},error: function(xhr,status,errMsg){
alert(“操作失敗!”);
}
});
第三部,後台方法接收。
String jsonStr = ServletActionContext.getRequest().getParameter(“mydata”);
JSONArray jsonArray = JSONArray.fromObject(jsonStr);
for(int i=0;ijsonArray.length(); i++){
JSONObject jsonJ = jsonArray.getJSONObject(i);
jsonJ.getInt(“name”);
jsonJ.getString(“age”);
}
…….ok不。
如何將數據以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.DeserializeArrayList(json);
DataTable dtb = new DataTable();
if (dic.Count 0)
{
foreach (Dictionarystring, 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)
{
Dictionarystring, object drow = new Dictionarystring, 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傳遞數據到後台
簡單的說你的這個問題不能是「PHP讀JS文件的數據」,而是「PHP怎麼識別JS提交的數組類數據」。因為PHP一般沒法直接識別JS的數組,所以你在定義你的這個JS數組的時候要使用 var jsonArray = {「1」:test, “1232”:test2 ;} 這種方式來定義一個JSON數組。之後你就可以自己寫個 AJAX 方法請求你的那個處理的頁面,並且把這個 JSON 數組傳遞過去。最後你在你的PHP腳本裡面把這個數組用json_decode()方法將這個JSON數組轉換成PHP的數組就行了。不過json_decode()只在PHP5.2.0之後的版本內才有集成。如果你的版本比較低就需要你自己去集成進去。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/247516.html