`
jbeduhai
  • 浏览: 504358 次
  • 性别: Icon_minigender_1
  • 来自: 山东
社区版块
存档分类
最新评论

调用ajax返回json的另一种用法

    博客分类:
  • ajax
阅读更多
1.页面代码
div id="commenthtml" style="display:none;">
                <div class="form_box">
                            <div class="form_row">
                                <div class="form_label"><label>专辑名称:</label></div>
                                <div class="form_field"><input type="text"  id="albumName" name="albumName"  value="" maxlength="30"/></div>
                            </div>
                            <div class="form_row">
                                <div class="form_label"><label>描&nbsp;&nbsp;&nbsp;&nbsp;述:</label></div>
                                <div class="form_field"><textarea title="字数不超过200个字符" id="albumDesc" name="albumDesc" onKeyDown="LimitTextArea(this)" onKeyUp="LimitTextArea(this)" onkeypress="LimitTextArea(this)"></textarea></div>
                            </div>
                            <div class="form_row">
                                <div class="form_label"></div>
                                <div class="form_field">
                                    <span class="btn_a"><input type="button" name="saveAlbum" id="saveAlbum"  onclick="submitAlbum(this.form);" value="创建"/></span>
                                    <span class="btn_a"><input type="button" id="cancelBtn" value="取消"/></span>
                                </div>
                            </div>
                </div>
</div>


调用ajax


function submitAlbum(form){
    var  albumName = $("#albumName").val();
    var  albumDesc = $("#albumDesc").val();
   if(albumName == ""){
        alert('提示:专辑不能为空!');
        return false;
   }
   if(albumDesc == ""){
        alert('提示:专辑描述不能为空!');
        return false;
   }
   $.ajax({
           type: "POST",
           url: "/enterprisercenter/saveAlbum.action",
           data: "tpId=1013&enterPriserAlbum.albumName=" + albumName +"&enterPriserAlbum.albumDesc=" + albumDesc,
           dataType:'json',
           success: function(json){
           		if (json.op=='succ'){
           			alert("操作成功");
           			window.location.reload();
           		}else if (json.op=='hasDiscard'){
           			alert(json.msg);
           			$("#" + json.code).focus();
           		}else{
           			alert(json.msg);
           		}
           }
        });
 }




action 代码:
  //保存相册
    public void saveAlbum() throws IOException{
        try {
        	if (FilterDiscard.hasDiscard(enterPriserAlbum.getAlbumName(),true)) {
        		getJsonHelper().fail("hasDiscard", "提示:名称中有非法字符!").set("code", "albumName").write();
        		return;
        	}
        	if (FilterDiscard.hasDiscard(enterPriserAlbum.getAlbumDesc(),true)) {
        		getJsonHelper().fail("hasDiscard", "提示:描述中有非法字符!").set("code", "albumDesc").write();
        		return;
        	}
            enterPriserAlbum.setAlbumUserid(this.getSessionUser().getUserId()+"");
            enterPriserAlbum.setCreateDate(DateTimeUtils.parseFullDateTime(DateTimeUtils.getDateTime()));
            enterPriserAlbum.setUpdateDate(DateTimeUtils.parseFullDateTime(DateTimeUtils.getDateTime()));
            enterPriserAlbum.setAlbumLogUrl("http://img1.woyopic.com/2010/0826/332/1-3bce7d978f54630889d0dd0310478dda.jpg");
            enterPriserPhotoService.addEnterPriserAlbum(enterPriserAlbum);
            getUser();
            getJsonHelper().succ().write();
        }catch(Exception ex) {
        	getJsonHelper().fail("操作失败!").write();
            ex.printStackTrace();
        }
        //return "personalAlbum";
        
    }


JsonHelper类代码:
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.struts2.ServletActionContext;

/**
 * 输出的帮助类 作用:封装控制器中json的使用, 用法如下:
 * 基础功能 set("chargeType", "1"); //设置json的值 add("list", "value1"); //添加值 write();
 * //输出 disableCache(); //清缓存
 * 组合使用 set("chargeType", "1").set("count", 5).add("list",
 * "value1").add("list","value2").succ().write();
 * 同时作注释 return getJsonHelper() //设置id .set("id", model.getId()) 
   //设置 列表
 * .set("list", configService.getList(model.getType())) // 设置 当前用户
 * .set("userId", passportService.getCurrentUserId()) // 结果列表'list' .add("list",
 * "value1") .add("list","value2") // 清缓存 .disableCache().succ().write();
 * @author  
*/
public class JsonHelper {
    private static final long serialVersionUID = -1531331734713947690L;
    protected JSONObject root = new JSONObject(false);
    /**
     * 取得输出对象JSON(Dto)
     * 
     * @return
     */
    public JSONObject getJson() {
        return root;
    }

    /**
     * 禁止缓存
     * @return
     */
    public JsonHelper disableCache() {
        HttpServletResponse res = ServletActionContext.getResponse();
        res.setContentType("text/html;charset=UTF-8");
//        res.setHeader("Cache-Control","no-cache"); //Forces caches to obtain a new copy of the page from the origin server
//        res.setHeader("Cache-Control","no-store"); //Directs caches not to store the page under any circumstance
//        res.setDateHeader("Expires", 0); //Causes the proxy cache to see the page as "stale"
//        res.setHeader("Pragma","no-cache"); //HTTP 1.0 backward compatibility
        return this;
    }

    /**
     * 设值
     * 
     * @param key
     * @param value
     * @return
     */
    public JsonHelper set(String key, Object value) {
        return put(key, value);
    }
    public JsonHelper put(String key, Object value) {
        root.put(key, value);
        return this;
    }
    /**
     * 以数组形式在指定位置添加数据 即 JsonHelper() .add("list", "abc") .add("list", "bcd")
     * .add("list", "cde");
     * 
     * 等价于 JSONArray array = new JSONArray(); array.add("abc");
     * array.add("bcd"); array.add("cde"); JsonHelper().set("list", array);
     * 
     * 暂不支持子路径 即 add("max.list", "abc") 将会保存到
     * JsonHelper().getJson().get("max.list") 而不是
     * JsonHelper().getJson().get("max").get("list")
     * 
     * @param key
     * @param value
     * @return
     */
    public JsonHelper add(String key, Object value) {
        Object j = root.get(key);
        if (j == null) {
            root.put(key, new JSONArray());
            j = root.get(key);
        }
        if (j instanceof JSONArray) {
            ((JSONArray) j).add(value);
            return this;
        }
        throw new RuntimeException("已经设值,且不是数组");
    }

    /**
     * 快速设置成功页 效果 json.put("op", "succ");
     * 
     * @return
     */
    public JsonHelper succ() {
        root.put("op", "succ");
        return this;
    }

    /**
     * 快速设置失败页,由于‘不成功’就表示‘失败’,所以此方法一般不需调用, 除非需要指定失败类型(或提示语句)
     * 
     * @param msg
     * @return
     */
    public JsonHelper fail(String msg) {
        root.remove("op");
        root.put("msg", msg);
        return this;
    }
    public JsonHelper fail(String op, String msg) {
        root.put("op", op);
        root.put("msg", msg);
        return this;
    }

    /**
     * 输出json,所用数据从json中取
     * 
     * @return
     */
    public String write() {
        HttpServletResponse res = ServletActionContext.getResponse();
        res.setCharacterEncoding("UTF-8");
//        res.setContentType("application/json");
        try {
            res.getWriter().print(root.toString());
            return null;
        } catch (IOException e) {
            throw new RuntimeException("", e);
        }
    }

    public String toString() {
        return root.toString();
    }
}


struts.xml代码
 <!-- 保存相册-->
        <action name="saveAlbum" class="com.woyo.business.enterprisercenter.representation.action.EnterPriserAlbumAction" method="saveAlbum">
            <interceptor-ref name="MastLoginWebStack"/>
<!--           <result name="personalAlbum" type="redirectAction">personalAlbum?tpId=1011</result>-->
        </action>

分享到:
评论

相关推荐

    ajax返回json对象.zip

    - **JSONP**:JSONP(JSON with Padding)是另一种跨域解决方案,通过动态插入`&lt;script&gt;`标签实现。 7. **安全考虑**: - **JSON Hijacking**:需要注意防止JSON响应被恶意脚本利用。 - **JSONP的安全性**:由于...

    ajax_json实例

    JSON,另一方面,是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它是基于JavaScript语法的,因此在Web开发中,特别是在与服务器进行数据交换时,JSON被广泛采用。 在"Demo_jquery_json...

    在外部方法使用Ajax请求返回的数据

    另一种方式是通过全局变量来共享数据。虽然这不是最佳实践,但在某些情况下可能有用: ```javascript var globalData; $.ajax({ // ... success: function(response) { globalData = JSON.parse(response); ...

    jsp中调用用Ajax必备之品的json的jar包

    在JSP中使用Ajax,我们经常需要处理JSON(JavaScript Object Notation)数据,因为JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。 标题中提到的"jsp中调用用Ajax必备之品的json的...

    php基于jquery的ajax技术传递json数据简洁实例_.docx

    另一种使用POST方式的jQuery AJAX方法是`$.post`,它更简洁,但处理返回数据时稍有不同: ```javascript $(function() { $("#send").click(function() { var cont = { username: $("input")[0].value, age: $...

    servlet返回json所需jar包

    Google的Gson库是另一个广泛使用的JSON库,它能够将Java对象转换为JSON字符串,反之亦然。Gson的使用简单,只需一个简单的调用即可完成转换。 3. **org.json库**: 这是一个小型的JSON库,提供了一些基本的类来...

    AJAX_11JSON详解

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript的一个子集,设计简单且易于人阅读和编写,同时也易于机器解析和生成。JSON格式被广泛应用于Web服务和客户端之间的数据交互,因为...

    lotus domino AJAX java打印json

    另一种方法是将查询字符串转换为哈希表(Hashtable)以便更方便地访问参数: ```java import java.util.Hashtable; import java.util.StringTokenizer; Document doc = agentContext.getDocumentContext(); String...

    jquery的ajax和getJson跨域.docx

    另一种跨域方法是使用 jQuery 的 `getJSON` 函数,它的用法类似于 AJAX,但专门用于获取 JSON 格式的数据。`getJSON` 同样支持 JSONP 协议,因此也可以实现跨域请求。基本用法如下: ```javascript $.getJSON('...

    Ajax异步调用

    2. **返回HashTable**:HashTable是另一种数据结构,类似于JavaScript的对象。在Ajax调用中,服务器可能返回一个哈希表(HashTable),如Java中的HashMap,键值对形式存储数据。例如,`{"key1":"value1", "key2":...

    ajax调用action返回xml或list

    为了解决上述问题,本文将介绍一种新的方法——直接利用Ajax调用Action来获取数据,并将数据以XML或JSON格式返回给前端。这种方式不仅能够有效提高系统响应速度,还能简化开发流程,增强代码的可读性和可维护性。 #...

    JSON+Jquery+servlet+jsp+ajax例子

    JSP(JavaServer Pages)是另一种Java Web技术,它允许开发者在HTML页面中嵌入Java代码,实现动态网页。在JSON+Jquery+servlet的例子中,JSP可能用来生成包含AJAX调用的HTML页面,或者在某些情况下,用于展示从...

    ajax用json实现数据传输

    首先,JSON是一种基于文本的轻量级的数据交换格式,它采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯。JSON数据由键值对组成,可以嵌套形成复杂的结构。在JavaScript中,JSON可以很容易地转换为...

    ajaxFileUpload_Struts2_json

    在IT行业中,AjaxFileUpload与Struts2框架的结合,特别是在处理JSON响应方面,是一种常见的文件上传技术。这里我们深入探讨这个主题。 首先,`ajaxFileUpload` 是一个JavaScript库,它允许用户在不刷新整个页面的...

    多层集合的JSON串拼接

    在前端,你可以使用jQuery的`$.ajax()`或`$.getJSON()`方法来发送异步请求到服务器获取JSON数据,然后使用`$.parseJSON()`或`JSON.parse()`来解析返回的JSON字符串。 5. **服务器端拼接**:在`testMethod.java`和`T...

    json 使用实例

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript的一个子集,易于人阅读和编写,同时也易于机器解析和生成。JSON采用完全独立于语言的文本格式,但也使用了类似于C家族语言,包括C...

    Java web ajax-getjson跨域操作.docx

    1. **使用普通的AJAX请求**:通过`$.ajax()`方法,设置`dataType`为`json`,表示期望的返回类型是JSON。但由于同源策略,这个请求会被浏览器阻止。注释掉的代码中,URL指向的是另一个端口(8089),这在默认情况下会...

    Jquery解析json

    JSON的数据格式主要包括两种结构:一种是键值对,另一种是有序的值列表。 #### jQuery与JSON数据交互 jQuery是一个快速、简洁的JavaScript库,使用户能更方便地处理HTML文档、事件、实现动画效果,并且方便地为...

    Json与前台交互demo

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript的一个子集,易于人阅读和编写,同时也易于机器解析和生成。在Web开发中,JSON是数据传输的重要载体,尤其在前后端交互中扮演着...

Global site tag (gtag.js) - Google Analytics