MVVM架構~knockoutjs系列(lie)之為Ajax傳遞(di)Ko數(shu)組(zu)對象
一些要說的
這是(shi)一(yi)個(ge)很有意思的(de)題目,在KO里,有對象和數(shu)組(zu)對象兩種,但這兩種對象對外表(biao)現都是(shi)一(yi)個(ge)function,如(ru)果希(xi)望得到他的(de)值,需要(yao)進行(xing)函(han)數(shu)式調用,如(ru)ko_a(),它的(de)結果為一(yi)個(ge)具(ju)體值或者數(shu)組(zu)或者函(han)數(shu),而ko_a則表(biao)示一(yi)個(ge)KO對象。
今天主要說一下(xia)如何(he)在ajax方法里向后臺傳(chuan)遞對象和數(shu)組等參數(shu),一般說來,我(wo)們為后臺傳(chuan)遞的是字符串和數(shu)字,而如果希望傳(chuan)遞對象,則需(xu)要使用(yong)$.param這個方法,下(xia)面具體用(yong)代(dai)碼(ma)說一下(xia)。
一些要做的
一般后以(yi)的(de)代(dai)碼理想是這樣的(de)
public JsonResult GeneratorOrder(int[] idArr)//一些需要被產生訂單的購物(wu)車記錄ID { //TODO:Generator Order return Json(idArr); }
而這樣的(de)后臺(tai)接口來說,我們前臺(tai)ajax的(de)參數需要做(zuo)一個$.param的(de)處理,如下
$.ajax({ type: "post", url: "/order/GeneratorOrder", data: $.param( self.SelCart(),true), //! 把(ba)數組直(zhi)接作為$.param的參(can)數是不(bu)可以(yi)的 dataType: "json", success: function (data) { Boxy.alert("To payPage of products:" + JSON.stringify(data)); } });
而事實上,上面(mian)的代碼運行(xing)結果(guo)卻是錯誤的,因為$.param方法只(zhi)支持對(dui)(dui)象(xiang),不支持直接的數(shu)(shu)組(zu),而數(shu)(shu)組(zu)如果(guo)在(zai)對(dui)(dui)象(xiang)里,是可以(yi)被(bei)支持的,這(zhe)也很有意思(si),所以(yi),上面(mian)代碼我們需(xu)要修改一下
$.ajax({ type: "post", url: "/order/GeneratorOrder", data: $.param({ idArr: self.SelCart() },true), //! 注意要傳遞第二個參數 dataType: "json", success: function (data) { Boxy.alert("To payPage of products:" + JSON.stringify(data)); } });
下(xia)面的運行結果是我們希望看到的