var jsonstr= " [{ \"FProductID\": \"1\", \"FPrice\": \"2\", \"FNum\": \"23\" },{ \"FProductID\": \"1\", \"FPrice\": \"2\", \"FNum\": \"23\" }]";
传递的数据时字符串对象
1.传递数据都是使用文本类型,即dataType="text"
前端:
$.ajax({
type: "post",
url: "../../Ashx/ProductService.ashx?action=SubmitForm&CustomerID=" + CustomerID + "&UserID=" + UserID + "&OrderNum=" + totalnum + "&TotalPrice=" + totalPrice,
data:{
OrderDetailArray:jsonStr //切记:data外侧不能用双引号括起来
},
dataType: "text",
//contentType: "application/json; charset=utf-8",切记如果dataType为Text时,contentType不能有
success: function (data) {
var result = eval('(' + data + ')');因为传递的数据类型是字符串,所以要把字符串转化为对象
if (result.success == "True") {
alert(result.msg);
location.reload();
}
}
});
NET后端:
case "SubmitForm":
string CustomerID = context.Request.Params["CustomerID"] ?? "";//使用context.Request.Params来获取Url中的值
string UserID = context.Request.Params["UserID"] ?? "";
string OrderNum = context.Request.Params["OrderNum"] ?? "";
string TotalPrice = context.Request.Params["TotalPrice"] ?? "";
string OrderDetailArray = context.Request["OrderDetailArray"] ?? "";//使用context.Request来获取Data数据包中的值
OrderDetailsModel[] OrderDetailsModelList = JsonConvert.DeserializeObject<OrderDetailsModel[]>(OrderDetailArray);
bool AddOrderresult = ReportManage.AddOrder(CustomerID, UserID, OrderNum, TotalPrice, OrderDetailsModelList);
//在这里指定输出数据的属性是文本类型,然后在前端使用evel()函数 把字符串转换为Json对象
<span style="color:#ff0000;"> context.Response.ContentType = "text"; //如果不显示指定数据类型的话,默认是json格式数据</span>
//context.Response.Write("{\"msg\":\""+AddOrderresult.ToString()+"\"}");
//context.Response.End();
context.Response.Write("{\"msg\":\"生成订单成功!\",\"success\":\"" + AddOrderresult.ToString() + "\"}");
break;
前端:
$.ajax({
type: "post",
url: "../../Ashx/ProductService.ashx?action=SubmitForm&CustomerID=" + CustomerID + "&UserID=" + UserID + "&OrderNum=" + totalnum + "&TotalPrice=" + totalPrice + "&OrderDetailArray=" + jsonStr + "",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
if (d<span style="color:#ff0000;">ata.success == "True"</span>) {//直接使用json对象
alert( data.msg);
location.reload();
}
}
});
NET后端:
case "SubmitForm":
string CustomerID = context.Request.Params["CustomerID"] ?? "";
string UserID = context.Request.Params["UserID"] ?? "";
string OrderNum = context.Request.Params["OrderNum"] ?? "";
string TotalPrice = context.Request.Params["TotalPrice"] ?? "";
string OrderDetailArray = <span style="color:#ff0000;">context.Request.Params["OrderDetailArray"] </span>?? "";//我把json字符串数据放入url中作为一个参数
OrderDetailsModel[] OrderDetailsModelList = JsonConvert.DeserializeObject<OrderDetailsModel[]>(OrderDetailArray);
bool AddOrderresult = ReportManage.AddOrder(CustomerID, UserID, OrderNum, TotalPrice, OrderDetailsModelList);
//切记:返回的数据,一定要是json数据才行,否则前端不会显示出来
//context.Response.ContentType = "text/json";
//context.Response.Write("{\"msg\":\""+AddOrderresult.ToString()+"\"}");
//context.Response.End();
context.Response.Write("{\"msg\":\"生成订单成功!\",\"success\":\"" + AddOrderresult.ToString() + "\"}");
break;
总结:这两种方式都可以完成功能,但是区别在哪里呢?
在我的一次开发中,把数据字符串放入url中,传递给ashx中时,如果数据字符串过于大的话,就会提交不上去,url传递的字符的数量,是有限制的
然后我使用了text文本作为传输对象,结果就可以传输过去了