因为项目需要AJAX去调用WCF,但由于需要传递的值非常多,我就想做成JSON形式进行传递。
代码如下:
var datas = []; var option = new Array(); option["FCustomerCode"]="@{@Session["FCustomerCode"].ToString()}"; if ($("#StartFBillDate").val() != "") { option["StartFBillDate"] = $("#StartFBillDate").val(); } if ($("#EndFBillDate").val() != "") { option["EndFBillDate"] = $("#EndFBillDate").val(); } datas.push(option);
传递如下:
data:'{"data":"'+datas+'","r":"'+ Math.random() * 10+'"}' ,
contentType: "application/json;charset=utf-8",
发现怎么搞都无法传递给后台,我一直把datas 给当成了数组,一直想格式化为JSON。其实错了。上面的Datas已经是JSON了。
在群里朋友们的帮助下,终于解决了。感谢他们。
解决办法:
1. jquery.JSON.stringfy 利用插件
2.利用方法
function JsonToString(o) { var arr = []; var fmt = function(s) { if (typeof s == 'object' && s != null) return JsonToStr(s); return /^(string|number)$/.test(typeof s) ? "'" + s + "'" : s; } for (var i in o) arr.push("'" + i + "':" + fmt(o[i])); return '{' + arr.join(',') + '}'; }
3.利用服务器JavaScriptSerializer
关键字: Json to string