百度了很久没找到事例,就是就Jquery ajax success(data)返回的data数据,怎么取出实体类

琢磨了很久,服务器端打算用json插件把实体类数据转换成json数据,好像也只能是用插件了吧
客户端script的代码是这样

$("#modelname").blur(function(){
var temp=$(this).val();
$.post(
urladdress,
{
message:temp
},
function modelmethod(data){
var model=data.model;

                $("#number").val(model.number);
                $("#year").val(model.year);
                $("#factory").val(model.factory);
                $("#_package").val(model._package);

                //$("#number").val(data);
            },"html"
        );
});

看见有一个设计是第一个输入框输入身份证,服务器检索数据,返回对应实体类数据,将各属性信息填到每个对应属性的输入框里。

现在遇到的问题是怎么从success(data)的data数据中得到实体类,如果$.post(url,data,success(data),"html");
换成$.post(url,data,success(data),"json");success(data)就不执行了

附上实例,谢谢各位兄弟帮忙看看

[code="java"]$.post(
urladdress,
{
message:temp
},
改成这样的:
$.post(
urladdress,
{"id":123,"name":"zhangsan","age":23},
[/code]

这样通过request.getParameter("id");
request.getParameter("name");
request.getParameter("age");
来获取数据,再new一个Model设置进去就可以了。

返回数据格式有问题

$.post(url,data,success(data),"html");
url:代表请求路径
data:代表参数信息
success(data):代表执行后返回调用函数信息
html或者json代表:格式
你post请求后应该有个success的函数,在函数内部你在进行得到数据信息
$.post(url,data,success(data),"html");
function success(data){
alert(data);
}

不能在java代码中直接输入对象到相应中,应该先把对象转换为json字符串,再输出到http响应中,可以用jackson来把对象转换为json字符串。
[quote]package com.action;

import java.io.*;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.pojo.Model;

public class ModelAction extends HttpServlet {

/**
 * 
 */
private static final long serialVersionUID = 1L;

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
    System.out.println("����get����");
    System.out.println(req.getParameter("message"));
    PrintWriter out = resp.getWriter();
    out.print("[\"bss100\",\"bss101\",\"2sc9999\"]");
    //resp.getOutputStream().print("[\"bss100\",\"bss101\"]");
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
    System.out.println("����post����");
    System.out.println(req.getParameter("message"));
    Model model=new Model();
    model.setNumber(500);
    model.setFactory("NEC");
    model.set_package("DIP");
    model.setYear("01");

///////////////////////改的地方/////////////////////////
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(model);

    PrintWriter out = resp.getWriter();
    out.print(json);

/////////////////////////////////////////////////////

    //resp.getOutputStream().print("[\"bss100\",\"bss101\"]");
}

}
[/quote]

另外servlet返回的数据已经是model对象了,不用通过var model=data.model来获取了。
直接用就可以了。
[code="java"]$("#number").val("200");
$("#year").val(model.year);
$("#factory").val(model.factory);
$("#_package").val(model._package);[/code]

刚才的java代码没有格式化,看这个吧。 :)
[code="java"]package com.action;

import java.io.*;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.pojo.Model;

public class ModelAction extends HttpServlet {

/**
 * 
 */
private static final long serialVersionUID = 1L;

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
    System.out.println("����get����");
    System.out.println(req.getParameter("message"));
    PrintWriter out = resp.getWriter();
    out.print("[\"bss100\",\"bss101\",\"2sc9999\"]");
    //resp.getOutputStream().print("[\"bss100\",\"bss101\"]");
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
    System.out.println("����post����");
    System.out.println(req.getParameter("message"));
    Model model=new Model();
    model.setNumber(500);
    model.setFactory("NEC");
    model.set_package("DIP");
    model.setYear("01");

    ////////////////////////改的地方/////////////////////////////////
    ObjectMapper mapper = new ObjectMapper();
    String json = mapper.writeValueAsString(model);

    PrintWriter out = resp.getWriter();
    out.print(json);
    ///////////////////////////////////////////////////////////////

    //resp.getOutputStream().print("[\"bss100\",\"bss101\"]");
}

}
[/code]

也可以这么写:
[code="java"]$.post(
urladdress,
{
// 要把数据用单引号包着,当作字符串处理,而不是对象 message:'{"id":123,"year":"2015","factory":23}'
},[/code]

然后可以通过jackson自动把json转换weiModel对象:
[code="java"]Model requestModel = mapper.readValue(req.getParameter("message"), Model.class);
System.out.println(requestModel);[/code]

页面的JSON变为字符串,后台获取字符串之后再转为实体。