gpt4 book ai didi

javascript - 如何使用 JSON 将对象从 Java 传递到 JavaScript?

转载 作者:行者123 更新时间:2023-11-30 18:52:26 24 4
gpt4 key购买 nike

不久前,我得到了使用 JSON 将内容从我的应用程序传递到 JavaScript 的答案。我不明白的是我实际上是如何将对象传递给 JavaScript 我看到你必须使用 .json 文件。

然后呢?我能够将我的 Java 对象转换为 JSON 对象,但它正在传递,我无法理解。我正在使用 JSP 和 Servlets 编写我的应用程序。

最佳答案

文件扩展名.json不是那么相关。这只是关于 HTTP Content Type header 。只要是application/json ,网络浏览器完全知道如何处理它。就 JSP/Servlet 而言,您基本上需要创建一个监听某个 url-pattern 的 servlet 类。 ,相应地处理请求参数或路径信息,并将 JSON 字符串写入 doGet() 中的响应。方法。

这是一个虚构的 servlet 示例,它根据国家/地区下拉列表的选定值返回城市选项值/标签对,它使用 Google Gson在 oneliner 中将完全有值(value)的 Java 对象转换为 JSON:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String country = request.getParameter("country");
Map<String, String> cities = cityDAO.find(country);
String json = new Gson().toJson(cities);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(json);
}

url-pattern 上映射这样一个 servlet的 /citiesweb.xml (或者,如果您想要对 SEO 更友好的方法,请将其映射到 /cities/* 并改用 request.getPathInfo())。

最后,在更改国家/地区下拉列表期间执行的 JS 代码中,您只需让它以所选国家/地区作为参数(或路径信息)在此 servlet 上触发异步(ajaxical)请求。我给一个jQuery基于示例,因为它疯狂地简化了触发 ajax 请求和遍历/操作 HTML DOM(否则“原始”JS 代码将长达 5 倍)。

$(document).ready(function() {
$('#country').change(function() {
var selectedCountry = $(this).val();
var servletUrl = 'cities?country=' + selectedCountry;

$.getJSON(servletUrl, function(options) {
var city = $('#city');
$('>option', city).remove(); // Clean old options first.
if (options) {
$.each(options, function(value, label) {
dropdown2.append($('<option/>').val(value).text(label));
});
} else {
dropdown2.append($('<option/>').text("Please select country"));
}
});
});
});

这是 JSP 的适当 HTML 示例:

<select id="country" name="country">
<c:forEach items="${countries}" var="country">
<option value="${country.key}">${country.value}</option>
</c:forEach>
</select>
<select id="city" name="city">
<option>Please select country</option>
</select>

(假设${countries}在应用范围内是一个Map<String, String>)

希望这清除了一个和另一个:)

另见:

关于javascript - 如何使用 JSON 将对象从 Java 传递到 JavaScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3379586/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com