日期:2014-05-16  浏览次数:20691 次

【高分】【在线等】请问,有什么比较好的方法来作ajax的response?谢谢~
请问,有什么比较好的方法来作ajax的response?谢谢~

在ajax的大多数教程中,一般都是用如下方式来写response,这样代码中就出现了好多out.println,感觉蛮麻烦的~
Java code

response.setContentType("text/xml; charset=utf-8");
response.setHeader("Cache-Control", "no-cache");
PrintWriter out = response.getWriter();
out.println("<RESPONSE>");
out.println("<page>" + page + "</page>");
out.println("</RESPONSE>");
out.close();]


所以我自己乱写了个
Java code
public static void response(HttpServletResponse response, String[][] xmlArgs)
            throws Exception {

    response.setContentType("text/xml; charset=utf-8");
    response.setHeader("Cache-Control", "no-cache");
    PrintWriter out = response.getWriter();
    out.println("<RESPONSE>");
    for (int i = 0; i < xmlArgs.length; i++) {
        if ("~@begin@~".equals(xmlArgs[i][1])) {
            out.println("<" + xmlArgs[i][0] + ">");
        } else if ("~@end@~".equals(xmlArgs[i][1])) {
            out.println("</" + xmlArgs[i][0] + ">");
        } else {
            out.println("<" + xmlArgs[i][0] + ">" + xmlArgs[i][1] + "</"
                    + xmlArgs[i][0] + ">");
        }
    }
    out.println("</RESPONSE>");
    out.close();
}



然后这样使用
Java code
String[][] newsXml = new String[5 * rowCot + 4][2];
newsXml[0][0] = "page";
newsXml[0][1] = Integer.toString(page);
newsXml[1][0] = "pageSize";
newsXml[1][1] = Integer.toString(pageSize);
newsXml[2][0] = "pageCot";
ewsXml[2][1] = Integer.toString(pageCot);
newsXml[3][0] = "rowCot";
newsXml[3][1] = Integer.toString(rowCot);
int xmlIdx = 3;
// 这里循环列出
while(true) {
    newsXml[++xmlIdx][0] = "news";
    newsXml[xmlIdx][1] = "~@begin@~";
    newsXml[++xmlIdx][0] = "id";
    newsXml[xmlIdx][1] = Integer.toString(news.getId());
    newsXml[++xmlIdx][0] = "top";
    newsXml[xmlIdx][1] = Integer.toString(news.getTop());
    newsXml[++xmlIdx][0] = "title";
    newsXml[xmlIdx][1] = title;
    newsXml[++xmlIdx][0] = "news";
    newsXml[xmlIdx][1] = "~@end@~";
}
XmlUtil.response(response, newsXml);



我知道这也是很蠢很麻烦的办法,限制也很多,用起来很不方便,请问大家都是如何response的呢~?或者有什么比较轻量的框架或现成的jar可以用呢?能给出详细的方法么,谢谢~
PS.我的ajax就是按照教程那样手写的,没有用的DWR等框架的,我只想知道用什么方法来RESPONSE比较好比较优雅,谢谢~

------解决方案--------------------
JScript code
PrintWriter out = response.getWriter();
out.println("<RESPONSE>");
out.println("<page>" + page + "</page>");
out.println("</RESPONSE>");
out.close();]

------解决方案--------------------
直接传出news的recordset
然后利用field.name来做标签 值就是field.value并且可以由rs来获取page,pagecount等信息。
------解决方案--------------------
要不你就直接从servlet返回json

然后前台用js动态加入 也可以
------解决方案--------------------
探讨
要不你就直接从servlet返回json

然后前台用js动态加入 也可以

------解决方案--------------------
推荐使用JSON来向前返回数据,再在前台用JAVASCRIPT处理返回的数据。
如var data = eval("("+responseText+")"),这样转化出来的就是一个对象。