A. 如何使用ajax將json傳入後台數據
首先,我們來寫一下後台如何生成要傳輸的數據:
這樣,就可以把數據無刷專新的寫入到資料庫。
B. 後台怎麼將json的數據傳到前台
假設後台傳遞到前台數據的臨時對象為json
。
var
json
=
「{……}」;
json
=
eval('('
+
json
+
')');
json就對前台對象了,json.endPlncre可以拿出指定屬性
C. 我有一個json文件,裡面存放json數據,請問我要怎麼在後台解析json數據然後傳到前端呢
net.sf.json.JSONArray
net.sf.json.JSONObject
用這兩個解析一下,拿到你想要的數據然後傳給前台就可以了吧
D. C#:如何將後台的數據通過json格式返回前台
Web Service介面方法
[WebMethod]
public string Project(string paramaters)
{
return paramaters;
}
實現代碼
public string Post(string methodName, string jsonParas)
{
string strURL = Url + "/" + methodName;
//創建一個HTTP請求
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strURL);
//Post請求方式
request.Method = "POST";
//內容類型
request.ContentType = "application/x-www-form-urlencoded";
//設置參數,並進行URL編碼
//雖然我們需要傳遞給伺服器端的實際參數是JsonParas(格式:[{\"UserID\":\"0206001\",\"UserName\":\"ceshi\"}]),
//但是需要將該字元串參數構造成鍵值對的形式(註:"paramaters=[{\"UserID\":\"0206001\",\"UserName\":\"ceshi\"}]"),
//其中鍵paramaters為WebService介面函數的參數名,值為經過序列化的Json數據字元串
//最後將字元串參數進行Url編碼
string paraUrlCoded = System.Web.HttpUtility.UrlEncode("paramaters");
paraUrlCoded += "=" + System.Web.HttpUtility.UrlEncode(jsonParas);
byte[] payload;
//將Json字元串轉化為位元組
payload = System.Text.Encoding.UTF8.GetBytes(paraUrlCoded);
//設置請求的ContentLength
request.ContentLength = payload.Length;
//發送請求,獲得請求流
Stream writer;
try
{
writer = request.GetRequestStream();//獲取用於寫入請求數據的Stream對象
}
catch (Exception)
{
writer = null;
Console.Write("連接伺服器失敗!");
}
//將請求參數寫入流
writer.Write(payload, 0, payload.Length);
writer.Close();//關閉請求流
String strValue = "";//strValue為http響應所返回的字元流
HttpWebResponse response;
try
{
//獲得響應流
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
response = ex.Response as HttpWebResponse;
}
Stream s = response.GetResponseStream();
//伺服器端返回的是一個XML格式的字元串,XML的Content才是我們所需要的Json數據
XmlTextReader Reader = new XmlTextReader(s);
Reader.MoveToContent();
strValue = Reader.ReadInnerXml();//取出Content中的Json數據
Reader.Close();
s.Close();
return strValue;//返回Json數據
}
Url的格式樣例:"http://59.68.29.106:8087/IFT_Project.asmx"
methodName參數就是"Project"
JsonParas就是使用C# javaScriptSerializer將List<Object>類型的對象序列化之後得到的值,數據格式:[{\"UserID\":\"0206001\",\"UserName\":\"ceshi\"}],Json數據中的中括弧代表由著多個對象集合序列化,花括弧代表一個對象序列化得到的結果,花括弧裡面的內容使用鍵值對的方式展示,多個屬性之間用逗號隔開,每個對象也用逗號隔開。
request.ContentType必須設置值,建議使用"application/x-www-form-urlencoded",設置其他值就很容易報伺服器內部異常,使用這種方式服務介面方法返回的是xml格式的字元串
payload將請求參數轉換成二進制來保存,此處一定要將「paramaters」加入其中,不然會報異常缺少參數,paramaters就是服務介面函數的參數名。函數中使用了URL編碼,注意在編碼的時候只需要將鍵和值進行編碼,不要將中間的=進行編碼,不然getResponse的時候會報異常。
request.ContentLength也是必須設置的值
在得到響應流之後Stream s = response.GetResponseStream();需要使用Reader來解析響應流,這個地方我使用的是XmlTextReader,因為我服務方法返回的是xml格式的字元串,其中Json數據在xml的Content中。在取出Json數據之後,再進行相應的反序列化即可得到對象。
E. springmvc怎麼接受前台傳進來的json數據
json作為一種輕量級
的數據交換格式,在前後台數據交換中占據著非常重要的地位。Json的語法非常簡單,採用的是鍵值對表示形式。JSON 可以將 JavaScript
對象中表示的一組數據轉換為字元串,然後就可以在函數之間輕松地傳遞這個字元串,或者在非同步應用程序中將字元串從 Web
客戶機傳遞給伺服器端程序,也可以從伺服器端程序傳遞json格式的字元串給前端並由前端解釋。這個字元串是符合json語法的,而json語法又是
javascript語法的子集,所以javascript很容易解釋它,而且
JSON 可以表示比"名稱 / 值對"更復雜的結構。下面我們通過實例來看看JQuery傳遞/解析json格式的數據是如何實現的。
1.首先來看前端jsp代碼:
[html] view plain
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript" src="/springMVC6/js/jquery-1.7.2.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
$(document).ready(function(){
//傳遞字元串格式json對象到後台(一個json對象)
$("#resolveJsonObject").click(function(){
var userName =encodeURI($("#userName").attr("value"));
var age = encodeURI($("#age").attr("value"));
var user = {userName:userName,age:age};
var aMenu = encodeURI(JSON.stringify(user));
$.ajax({
url:"/springMVC6/user/data/resolveJsonObject" ,
data:"orderJson=" + aMenu,
success:function(data){
}
});
});
//傳遞json數組到後台
$("#resolveJsonArray").click(function(){
var userName =encodeURI($("#userName").attr("value"));
var age = encodeURI($("#age").attr("value"));
//數組開始
var user1 = {userName:userName,age:age};
var allMenu={
"menu":[ ]
};
allMenu.menu.push(user1);
var allMenu1 = encodeURI(JSON.stringify(allMenu));
$.ajax({
//json數組
url:"/springMVC6/user/data/resolveJsonArray" ,
data:"orderJson=" + allMenu1,
success:function(data){
}
});
});
//接收後台的json在前台解析
$("#resolveJson").click(function(){
$.ajax({
//解析從後台返回的json數據
url:"/springMVC6/user/data/resolveJson" ,
type:"post",
success:function(data){
var arr=eval(data);
alert(arr.length);
for(var m = 0;m<arr.length;m++){
alert(arr[m].user.userName);
}
}
});
});
});
</script>
</head>
<body>
<h1>json添加用戶</h1>
姓名:<input id="userName" type="text" name="userName">
年齡:<input id="age" type="text" name="age"><br>
<input type="button" id="resolveJsonObject" value="json對象">
<input type="button" id="resolveJsonArray" value="json數組">
<input type="button" id="resolveJson" value="前端解析json字元串">
</body>
</html>
2.使用javabean解析前端數據:
[java] view plain
package com.tgb.web.controller.annotation;
import java.io.IOException;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.tgb.web.controller.entity.User;
@Controller
@RequestMapping("/user/data")
public class DataController {
//接收前台傳過來的字元串格式的json對象,在後台進行解析
@RequestMapping("/resolveJsonObject" )
public void resolveJsonObject(HttpServletRequest request,HttpServletResponse response) throws IOException {
//解碼
String str = URLDecoder.decode(request.getParameter("orderJson"),"UTF-8");
JSONObject jb=new JSONObject();
//將json格式的字元串轉換為json對象,並取得該對象的「userName」屬性值
String o=(String)jb.fromObject(str).get("userName");
System.out.println(o);
}
//傳遞json數組字元串
@RequestMapping("/resolveJsonArray" )
public void resolveJsonArray(HttpServletRequest request,HttpServletResponse response) throws IOException {
//解碼,為了解決中文亂碼
String str = URLDecoder.decode(request.getParameter("orderJson"),"UTF-8");
JSONObject jb=new JSONObject();
//將json格式的字元串轉換為json數組對象
JSONArray array=(JSONArray)jb.fromObject(str).get("menu");
//取得json數組中的第一個對象
JSONObject o = (JSONObject) array.get(0);//獲得第一個array結果
//取出json數組中第一個對象的「userName」屬性值
String name=o.get("userName").toString();//獲得屬性值
System.out.println(name);
}
//通過該函數返回json格式的數據,在前台通過JQuery進行解析
@RequestMapping("/resolveJson" )
public void resolveJson(HttpServletRequest request,HttpServletResponse response) throws IOException {
List m = (List) new ArrayList();
JSONArray jsons = new JSONArray();
for(int i=0;i<10;i++){
User user = new User();
user.setUserName("name_" + i);
m.add(user);
}
for(int j=0;j<m.size();j++){
JSONObject jsonObject = new JSONObject();
jsonObject.put("user", m.get(j));
jsons.add(jsonObject);
}
response.getWriter().print(jsons.toString()) ;
}
@RequestMapping("/toJson" )
public String toJson() {
return "/json";
}
}
json的作用並不僅僅
在於作為字元串在前後台進行傳遞,我們採用json傳遞數據的時候更主要的考慮到的是它的傳輸效率。當兩個系統需要進行數據交換的時候,如果傳遞的是經過
序列化的對象,效率是非常低的,如果傳遞的是存儲大量對象的數組的時候效率就更不敢想像了,這時如果通過將對象或數據轉換成json字元串進行傳遞,效率
就會提高很多。
F. 【JSON】JSON在前端和後端傳遞
後端:我們假定使用的是java語言
前端:毫無疑問是js
java語言:是一種強類型的語言,必須定義類型,然後生成實例;而js卻不是,雖然它也是面向對象的,但是它並沒有先定義類這一種概念(但是js也有類型),它是基於原型的一種模式,和java完全不同。很顯然,二者的原理,機制,語法並不能兼容。二者產生的對象並不能被對方解讀。再來看網路傳輸,通常就是http/tcp協議嘍,使用的其實是請求-響應,再說白了即使字元串,不論後台傳來的是什麼類型的數據,也不論前台傳回的什麼類型的數據,網路層統統當作字元串處理,它也沒有辦法來解析類型啊!說到這里,前後台傳數據也就只能用字元串了,那也就意味著它們各自都要完成一個轉換過程,把要發送的轉換成字元串,把要收到的字元串解析成自己的對象。因為傳輸的字元串會涉及前後台雙方的解析和處理,所以雙方都必須認識或者知道字元串該怎麼轉,也就是說,最好能有一種通用的規則來編輯,轉換字元串,這個標准或者協議就是JSON,JSON就是用來交換數據的,是一種string,一種獨立於平台的數據格式。
這樣一來,前台就需要把自己的數據類型轉成JSON,然後發給後台,後台在用JSON來解析數據,轉換成自己的類型。後台傳前台一樣。那麼,怎麼把自己的數據轉成JSON呢?
`JSON`對象可以通過JavaScript存取屬性!JSON對象封裝成JSON字元串經常用於前後台傳輸數據!
如果在前端使用,那麼JSON對象可以通過 對象.屬性名 來調用,如果是json字元串,那麼只是字元串了!
在數據傳輸過程中,JSON是以文本、即字元串的形式傳遞的,而JavaScript操作的是JSON對象,所以,JSON對象和JSON字元串之間的相互轉換是關鍵。
JSON字元串:var str = '{ name: 'xmt', sex: 'woman' }';
JSON對象: var str = { name: 'xmt', sex: 'woman' };
JSON字元串轉化為JSON對象:var obj = JSON.parse(str) ;
JSON對象轉化為JSON字元串:var str = JSON.stringify(obj);
G. JSON數據交換格式
1.json數據類型:
number:和JavaScript的number完全一致;
boolean:就是JavaScript的true或false;
string:就是JavaScript的string;
null:就是JavaScript的null;
array:就是JavaScript的Array表示方式——[];
object:就是JavaScript的{ ... }表示方式。
2.JSON字元集必須是UTF-8,JSON的字元串規定必須用雙引號"",Object的鍵也必須用雙引號""
3. JSON.stringify(value,[replacer],[space]) 方法用於將 JavaScript 值轉換為 JSON 字元串。三個參數,value:要轉化的字元串,replacer處理函數;space縮進.
4. JSON.parse() 方法用於將一個 JSON 字元串轉換為對象。
H. 如何將後台的數據通過json格式返回前台
Action中返回的數據類型是Class A: 在Action中直接這么返回一個數據就行: 這是通過ajax 實現的前後台交互,所以在success中得到後台傳回來的json數據result, result就是對象,直接通過Class A的屬性名就能取到具體屬性的值了:
I. 如何使用ajax將json傳入後台數據
只需要後台給前端一個介紹json數據的介面,然後前端使用ajax就可以通過介面將json數據出入後台。
工具原料:編輯器、瀏覽器
1、首先前端將傳送給後台的數據構造成json格式,然後使用ajax直接將數據傳輸給介面即可,簡單的代碼示例如下:
$.ajax({
type:"post",//設置方式
url:"test.php",//介面的地址
data:{"name":"tom","age":"20"},
success:function(data){
//data為成功後後台返回的數據
}
});
2、瀏覽器開發者中可以看到數據發送情況。
J. easyui怎麼用json和後台交互
easyui要實現前後台的數據交互,大體來講可以按以下順序來操作
1、了解當前組件數版據的所需格式權,一般都是json結構
2、後台通過easyui所請求的地址,返回相應的數據(json)
3、獲取到數據後,設置要顯示的效果。
示例:easyui中的datagrid組件。
格式要求如:
{total:1000,rows:[{title:122},{title:122},{title:122},{title:122}]}