您的位置:首页 > 其它

Ajax使用心得

2014-09-19 22:48 239 查看
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;


2.传递数据都是使用文本类型,即dataType="josn"
前端:

$.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文本作为传输对象,结果就可以传输过去了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: