相关文章
更多最近更新
更多jquery与servlet交互的json问题
2019-03-25 13:43|来源: 网路
框架用烦了,目前只用servlet和jquery,servlet返回json数据,jquery在前面无刷新的解析,原来用struts2自带的jsonplugin,现在用google-gson包生成json字符串,但是为什么不行呢?
前台页面jquery请求后台servlet:
$(document).ready(function(){
$("#b_submit").click(function(){
$.ajax({
type:"POST",
url:"buttonSubmit",
data:{
id:1,
name:"zhang"
},
success:function(data){
alert(data.list);
},
dateType:"json"
})
});
})
后台servlet代码:
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
//response.setContentType("application/x-json");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
String name = request.getParameter("name");
String id = request.getParameter("id");
System.out.println(name);
System.out.println(id);
List<TestBean> tbList = new ArrayList<TestBean>();
TestBean tb = new TestBean();
tb.setId(id);
tb.setName(name);
tbList.add(tb);
TestBean tb2 = new TestBean();
tb2.setId("2");
tb2.setName("gu");
tbList.add(tb2);
Gson gson = new Gson();
HashMap<String,List<TestBean>> map = new HashMap<String,List<TestBean>>();
map.put("list", tbList);
out.print(gson.toJson(map));
out.close();
}
但是为什么不行呢?有朋友说要换成response.setContentType("application/x-json");但是我也试了,也不行,页面用data.list时总是undefined,用data.length,它会按string的长度返回来,后来用JSON.parse来转换是可以的,但我觉得这样麻烦,如果能返回json数据,又何必再转换一下呢?效率就降低了,请大家帮助!
问题补充:
我返回来的是一个类似的json格式的字符串,但是我用js去判断的时候,会有问题:
例如:{"list":[{"id":1,"name":"gu"},{"id",2,"name":"zhang"}]}
我用data.list取不到值啊,这是为什么呢?以前集成struts2框架时都是可以的
前台页面jquery请求后台servlet:
$(document).ready(function(){
$("#b_submit").click(function(){
$.ajax({
type:"POST",
url:"buttonSubmit",
data:{
id:1,
name:"zhang"
},
success:function(data){
alert(data.list);
},
dateType:"json"
})
});
})
后台servlet代码:
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
//response.setContentType("application/x-json");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
String name = request.getParameter("name");
String id = request.getParameter("id");
System.out.println(name);
System.out.println(id);
List<TestBean> tbList = new ArrayList<TestBean>();
TestBean tb = new TestBean();
tb.setId(id);
tb.setName(name);
tbList.add(tb);
TestBean tb2 = new TestBean();
tb2.setId("2");
tb2.setName("gu");
tbList.add(tb2);
Gson gson = new Gson();
HashMap<String,List<TestBean>> map = new HashMap<String,List<TestBean>>();
map.put("list", tbList);
out.print(gson.toJson(map));
out.close();
}
但是为什么不行呢?有朋友说要换成response.setContentType("application/x-json");但是我也试了,也不行,页面用data.list时总是undefined,用data.length,它会按string的长度返回来,后来用JSON.parse来转换是可以的,但我觉得这样麻烦,如果能返回json数据,又何必再转换一下呢?效率就降低了,请大家帮助!
问题补充:
我返回来的是一个类似的json格式的字符串,但是我用js去判断的时候,会有问题:
例如:{"list":[{"id":1,"name":"gu"},{"id",2,"name":"zhang"}]}
我用data.list取不到值啊,这是为什么呢?以前集成struts2框架时都是可以的
相关问答
更多-
jquery mobile 的servlet跳转[2024-01-26]
jquery mobile 是设置了ajax请求的,请求完成后会返回原来的页面 1、这种情况在servlet是没法中断请求的重定向的 response.sendRedirect(url),要想改变返回的页面,可以在返回成功后,再跳到想要跳转的页面。 2、屏蔽jquerymobile的aja请求 /*以前记得这样写过,你试试可不可以*/ $( document ).bind( "mobileinit", function(){ $.mobile.page.prototype.options.degradeIn ... -
我认为你应该稍微改变你从servlet发送的JSON: {employees:[{fullname:"Abhishek Raj Simon", email:"a@a.com"}]}在这种情况下会更好一些。 我建议jQuery,因为pap也建议。 代码是: $.getJSON('/temp/jsontest', function(data) { var items = []; for (employee in data.employees) { items.push(employee ...
-
可能是服务器用这样的JSON响应 data:{ "description" : "this is the one" } console.log(data.description); // output's - this is the one may be the server responds with JSON like this data:{ "description" : "this is the one" ...
-
如何使用jquery ajax格式化来自servlet的返回json响应(How to format returned json response from servlet using jquery ajax)[2021-07-03]
试试这个假设你的json strin是jsonString = {...,..,..}; for(i=0; i从Servlet调用Jquery(Calling Jquery From Servlet)[2023-03-22]
JSP页面和文档转换为servlet,然后将其编译为字节码并在服务器上执行。 servlet的输出作为对浏览器的响应发送,浏览器尝试将其呈现为HTML页面。 HTML页面可能包含jQuery代码。 如果你想从jQuery调用一个servlet,你可以使用AJAX作为之前响应的建议。 您可能会发现我编写的以下有关使用Servlet,JSP,HTML,jQuery和AJAX的教程非常有用: 设置J2EE Web应用程序的分步指南 第3步:JSP模板和标记库以及第4步:HTML5和AJAX(jQuery)接口可能 ...用我的代码替换你的ajax代码...... //JSON var masterdata = new Object(); masterdata.grn = $('#grn').val(); masterdata.pono = $('#pono').val(); masterdata.podt = $('#podt').val(); //call the servlet to insert the data only when error = 0 ...这个问题是因为我的项目实施。 我已经根据我的项目格式化了网址。 现在它的工作很好。 我在问题中提到的代码可以正常工作。 The issue is because of my project implementation. I have formatted the url based on my project. Now its works fine. The code which I mentioned in the question will work fine.如控制台输出中所示,您只从servlet中获取一个对象,这就是显示只有一个选项的原因。 您可以通过一起使用JSONObject和JSONArray来构造json,例如使用JSONObject和JSONArray 创建json字符串 或者,如果您通过包含逗号并在循环中打印对象来修改连接 例如未经测试 JSONObject obj = new JSONObject(); pw.println("["); while (j.next()) { state_id = j.getS ...它实际上听起来好像使用一个引用URL的字符串作为源,它基本上会在每次搜索时向该源发出请求,并且“term”参数只是在它开始时带有搜索框中的内容。 换句话说,这是否意味着它不是简单地加载所有可能术语的JSON而只是像数组一样使用它? 相反,它是在每次搜索时获取可能性? 是的,这是正确的。 当您使用远程源时, 您负责在发回自动完成候选者之前进行过滤。 查看jQueryUI自动完成演示页面上的远程演示。 在请求被激活时查看firebug以查看请求的外观。 如果需要使用请求发送额外参数,可以将函数传递给source ...从servlet生成JSON(Generating JSON from servlet)[2022-11-17]
由用户2021114更改 加 obj = new JSONObject(); 在While循环中 while(rs.next()) { obj = new JSONObject(); vname=rs.getString ("vlgname"); vcode=rs.getString("vlgcode"); divsec=rs.getString("divsec"); obj.p ...