前後臺傳遞參數

前臺傳到後臺

  1. 序列化表單
$("#goodsBuyForm").serialize();//字符串
$("#goodsBuyForm").serializeObject();//json對象

將表單序列化爲
name1=value1&name2=value2 的形式
用在ajax請求中

params = $("#goodsBuyForm").serialize();
$.ajax({
data:param,
//data:{"params":params,"goodsSku":goodSkuId}
// 這樣想多傳幾個參數親測不行,傳到後臺的參數也無法直接映射到對象中去
})

serializeObject()基於JQuery的serializeArray()

/**
 * 將表單元素序列化爲JSON對象 基於jQuery serializeArray()
 */
$.fn.serializeObject = function() {
    var o = {};
    var a = this.serializeArray();
    $.each(a, function() {
        if (o[this.name] !== undefined) {//剛出現的表單name的值。爲undefined直接保存name和value
            if (!o[this.name].push) {//有相同name屬性的表單,用數組保存
                o[this.name] = [ o[this.name] ];
            }
            o[this.name].push(this.value || '');
        } else {
            o[this.name] = this.value || '';
        }
    });
    return o;
};

表單序列化爲數組:數組的內容爲{}json對象,json對象有兩個鍵name和value
serializeArray不會序列化不需要提交的表單控件,跟常規的表單提交行爲是一致的。不在<form>標籤內的表單控件不會被提交、沒有name屬性的表單控件不會被提交、帶有disabled屬性的表單控件不會被提交、沒有被選中的表單控件不會被提交。
參考博客
serializeObject()的功能更強大

後臺傳到前臺。

方式1:
@ReponseBody 註解
返回的string,integer或者map類型直接傳到頁面,通常用於ajax請求在success:function(data)中用到後臺返回的數據中。
應該是被這個註解過,就不會調用視圖解析器了吧。
如果是返回要轉向的頁面就不能用這個註解了。

//data.count 取值
    /**
     * 獲取購物車數量
     * @param request
     * @return
     */
    @RequestMapping("/getCartCount")
    @ResponseBody
    public int getCartCount(HttpServletRequest request){
        try{
            MemberInfo info = (MemberInfo) request.getAttribute("consumerInfo");
            info = new MemberInfo();
            info.setMemberId("100007377612");//測試代碼
            if(null == info) {
                return 0;
            }else{
                int count = userGoodsCarService.count(info.getMemberId());
                return count;
            }
        }
        catch (Exception e){
            return 0;
        }
    }

方式2:
要返回的值以鍵值對的形式存入model對象中

@RequestMapping("/linkToCartList")
    public String linkToCartList(HttpServletRequest request,Model model){
    model.addAttribute("shopSet", shopSet);
            model.addAttribute("userGoodsCarList", userGoodsCarList);
            model.addAttribute("skuIds", StringUtils.join(skuIds,";"));
            model.addAttribute("cartGoodsNum", cartGoodsNum);
    return "web/goods/cart/cartList";//交給視圖解析器
    }

方式3:
傳JSONObejct對象的toString()方法。

JSONObject result = new JSONObject();
result.put("status", 0);
result.put("goodsWater", goodsWater);
result.put("shopGoodsPrice", shopGoodsPrice);
response.getWriter().write(result.toString());
gx工程:
var valueData = eval("(" + data.responseText + ")");
hn:
success: function (data) {
var goodsWater = data.goodsWater;
var marketInfo = data.marketInfo;//沒有使用eval將json字符串轉化爲json對象,應該是得不到數據的啊。好奇怪啊。

是因爲:

dataType:"json";//將傳過來的json型字符串轉化爲json對象
//等價爲eval("("+jsonString+")")的作用

這裏寫圖片描述
json和javascript數組的轉換

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章