MVVM架构~knockoutjs系列之为Ajax传递Ko数组对象

时间:2023-03-08 23:18:35
MVVM架构~knockoutjs系列之为Ajax传递Ko数组对象

返回目录

一些要说的

这是一个很有意思的题目,在KO里,有对象和数组对象两种,但这两种对象对外表现都是一个function,如果希望得到他的值,需要进行函数式调用,如ko_a(),它的结果为一个具体值或者数组或者函数,而ko_a则表示一个KO对象。

今天主要说一下如何在ajax方法里向后台传递对象和数组等参数,一般说来,我们为后台传递的是字符串和数字,而如果希望传递对象,则需要使用$.param这个方法,下面具体用代码说一下。

一些要做的

一般后以的代码理想是这样的

   public JsonResult GeneratorOrder(int[] idArr)//一些需要被产生订单的购物车记录ID
{
//TODO:Generator Order
return Json(idArr);
}

而这样的后台接口来说,我们前台ajax的参数需要做一个$.param的处理,如下

         $.ajax({
type: "post",
url: "/order/GeneratorOrder",
data: $.param( self.SelCart(),true), //! 把数组直接作为$.param的参数是不可以的
dataType: "json",
success: function (data) {
Boxy.alert("To payPage of products:" + JSON.stringify(data));
}
});

而事实上,上面的代码运行结果却是错误的,因为$.param方法只支持对象,不支持直接的数组,而数组如果在对象里,是可以被支持的,这也很有意思,所以,上面代码我们需要修改一下

         $.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));
}
});

下面的运行结果是我们希望看到的

aaarticlea/png;base64,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" alt="" />

返回目录