Struts2(convention plugin) + JQuery + Json

PS:JQuery版本:v1.6.4
在Action类中写响应的方法:
public String start(){

    HttpServletRequest request = ServletActionContext.getRequest();
    HttpServletResponse response = ServletActionContext.getResponse();
    String voteId = request.getParameter("voteId");
    voteId = (null == voteId) ? "-1" : voteId;
    Integer iVoteId = Integer.parseInt(voteId);
    StringBuffer strBuf = new StringBuffer("{");
    //将vote记录的vaildSign置为“Y”
    Vote vote = null;

    response.setContentType("text/html");
    response.setCharacterEncoding("UTF-8");
    try {
        vote = voteManager.find("from Vote where id = ?", iVoteId).get(0);
        vote.setStatus(Vote.VOTE_STATUS_S);
        voteManager.saveOrUpdate(vote);
        strBuf.append("\"type\" : \"success\"");
        strBuf.append(", \"msg\" : \"操作成功\"");
    } catch(Exception e) {
        strBuf.append("\"type\" : \"faild\"");
        strBuf.append(", \"msg\" : \"数据库出错,请联系管理员\"");
    } finally {
        strBuf.append("}");
        PrintWriter out = null;
        try {
            out = response.getWriter();
        } catch (IOException e) {
            e.printStackTrace();
        }
        out.write(strBuf.toString());
        out.flush();
        out.close();
    }

    return null; //无需返回视图
}

如此便可完成JQuery异步请求。
其中,我曾碰到了,请求进入到了该方法,也返回了Json结果,但是不进入JQuery的回调函数的问题,在firebug中能看到返回的Json结果{'type':'success', 'msg':'XXX'},就是不进回调函数。
网上找了个遍,也没能很好的解决,后来在对返回的Json数据格式抱着格式不对的态度,将返回的单引号改为双引号,果然!!! 进回调函数了,我勒个去,坑啊~

你可能感兴趣的:(jquery,json,struts2,不进回调函数)