通过一个抢购的需要,而引发的购物车问题(这个抢购是一个与主站不同的域名)
这其实是一个跨域的问题,我们要用到的技术是jsonp,看看吧:P
1: $.ajax({
2: jsonp: "jsonpcallback",
3: data: 'productID=30000192'
4: dataType: "jsonp", //注意,这里不是type:"post",这里是jsonp,这是指跨域访问
5: url: "http://www.c2cedu.com/cart/AddUserCart",
6: success: function(result){
7: if (result==true)
8: {
9: window.location="http://www.zzl.com/cart/mycart";
10: }
11: }
12: });
而在我们的接收方法中会有一个cart类,所对应一个mycart方法,用来处理购物车逻辑
1: /// <summary>
2: /// 为跨载请求而设计的方法
3: /// </summary>
4: public ActionResult AddUserCart(string jsonpcallback, string productID)
5: {
6: return this.AddUserCart(productID, null, jsonpcallback);
7: }
8: public ActionResult AddUserCart(string productID, string storeUserID, string jsonresult)
9: {
10: //公用的购物车逻辑
11: }
这时,我们看到了方法中多了一个参数jsonpcallback,这其实是系统为我们自动添加的JSONP随机数,我们用它来接收一个具有跨域请求的POST,即JSONPOST.
事实上系统为我们做了一件事,即http://www.c2cedu.com/cart/AddUserCart?jsonpcallback=jsonp1306123875205,看到有这个参数,我们就说它是跨域的请求.