作者lueichun (= =)
看板Web_Design
标题Fw: [问题] 在Spring,回传物件给JQuery Ajax回调函数
时间Mon Mar 28 12:39:13 2022
※ [本文转录自 java 看板 #1YGJkaDp ]
作者: lueichun (= =) 看板: java
标题: [问题] 在Spring,回传物件给JQuery Ajax回调函数
时间: Mon Mar 28 12:37:54 2022
※状况概述:
就是我写的一段测试CODE,可以回传Map或是JSON格式的字串,透过HttpResponse的Body
回传,然後Map和字串被jQuery Ajax的回调函数取得,进而取出Map和字串里面的value。
※程式码:
以下是透过servlet回传一个map:
@RequestMapping(value = "/search/api/getSearchResult.do")
public Map<String,Object> getSearchResultViaAjax(HttpServletRequest request)
{
Map<String,Object> map = new HashMap<>();
String username = request.getParameter("username");
String email = request.getParameter("email");
map.put("username", username);
map.put("email", email);
return map;
}
以下是透过servlet回传json格式字串:
@RequestMapping(value = "/search/api/getSearchResult1.do")
public String getSearchResultViaAjax1(HttpServletRequest request) {
//透过ajax传送query string,直接用getParameter取值
Map<String,Object> map = new HashMap<>();
String username = request.getParameter("username");
String email = request.getParameter("email");
map.put("username", username);
map.put("email", email);
String json = new Gson().toJson(map);
return json;
}
然後map跟json格式字串回传回前端的回调函数:
$.getJSON(
"/TestSpring4Ajax2/search/api/getSearchResult1.do",
$.param(search),
function(data) {
var json = "<h4>Ajax Response</h4><pre>"
+
data.email + "</pre>";
$('
#feedback').html(json);
});
※补充说明:
以上的code没有问题可正常执行,但我不懂的是为何java物件传回去後,可以直接当成
JavaScript物件来使用,是jQuery有做甚麽转换?或是javaScript本身支援这种用法??
我目前知道的是上面那个data物件是JavaScript物件,所以才可以直接用
属性名称来取值(data.email)。然後从servlet回传的又是java物件,看起来就很像是
java物件在回传过程中转换成对应的JavaScript物件,可是这样理解感觉很怪,
请问有更好的理解方式吗??或是说为何可以直接把回调函数的参数,当成一般的
JavaScript物件来使用??
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 101.10.6.169 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1648442276.A.373.html
※ 发信站: 批踢踢实业坊(ptt.cc)
※ 转录者: lueichun (101.10.6.169 台湾), 03/28/2022 12:39:13
1F:推 luckynu: $.getjson帮你自动转成json物件了,如果你用$.get,你就 03/29 11:45
2F:→ luckynu: 需要自己转json物件的处理 03/29 11:45