通过一个抢购的需要,而引发的购物车问题(这个抢购是一个与主站不同的域名)

这其实是一个跨域的问题,我们要用到的技术是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,看到有这个参数,我们就说它是跨域的请求.

posted @ 2011-05-23 14:44  张占岭  阅读(462)  评论(0编辑  收藏  举报