Ajax使用心得

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文本作为传输对象,结果就可以传输过去了




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值