新足迹

 找回密码
 注册

精华好帖回顾

· 腊肉准备中 - 完成,更新请看2楼 (2010-6-22) 大胃 · 读帖随感 - 算是过来人 (2014-8-17) acoke
· 刚刚签下了买地合同,着手盖房,请教大家! (2007-2-22) fisher · 【自己动手做小零食——四川灯影牛肉丝。。。具体做法2楼已补。。。】 (2011-8-19) 航迹云
Advertisement
Advertisement
查看: 1574|回复: 13

问个AJAX的小白问题 [复制链接]

发表于 2013-3-4 23:39 |显示全部楼层
此文章由 bc 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 bc 所有!转贴必须注明作者、出处和本声明,并保持内容完整
有一个网站,通过下面的请求来向shopping cart加东西:
http://www.mydomain.com/shop.aspx?pid=1&qty=1
所以一般的button我就使用window.location来完成。
但是有些产品是搭配的,所以一次得连着加两个以上,
所以我就用jquery的$.get连送两个不同产品ID的请求。
这样的做法应该是可以的,因为当时大家测试的时候
都是工作的,只是上线了一段时间,还没有真正有人
买过东西,今天好不容易有人要买东西了,我却被告知
网站不正常,东西加不到购物车里。自己试了一下,还
真是的。如果第一个加的是那个搭配的产品,就一定加
不进去,一旦先加了别的再加搭配的就可以,或者直接
在地址栏里把用$.get送出的地址输进去,也是可以加入
的。

所以我想问为什么$.get会失败?通过它发出的请求和用
window.location重定向有什么本质区别吗?
Advertisement
Advertisement

发表于 2013-3-5 02:01 |显示全部楼层
此文章由 happysee 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 happysee 所有!转贴必须注明作者、出处和本声明,并保持内容完整
两次.get的顺序重要吗?

发表于 2013-3-5 03:59 |显示全部楼层
此文章由 joerkky 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 joerkky 所有!转贴必须注明作者、出处和本声明,并保持内容完整
1. 一般来说,这样的功能都是用POST,GET只是获取资源用。当然这是convention, 不follow也没什么。
2. 听起来好像是javascript出错。用firebug看看出错原因吧

发表于 2013-3-5 08:59 |显示全部楼层
此文章由 bc 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 bc 所有!转贴必须注明作者、出处和本声明,并保持内容完整
joerkky 发表于 2013-3-5 04:59
1. 一般来说,这样的功能都是用POST,GET只是获取资源用。当然这是convention, 不follow也没什么。
2. 听起 ...

谢谢你的回答。
1. 我是在一个CMS上实现shopping cart的,它的规定是使用GET来加商品。
2.基本上每个产品我做一个page,如果只要加一个商品,我用下面的代码实现(在button的onclick 里面调用):

function addToCartFun(prodId, quantity, ops) {
        <!-- alert("/store.aspx?productId=" + prodId + "&quantity=" + quantity); -->
        window.location = "/store.aspx?productId=" + prodId + "&quantity=" + quantity + "&options=" + ops
    }

如果是要加两个产品的page,则用下面不同的代码(在button的onclick中调用两次):
function addToCartFunAjax(prodId,quantity, ops)
{
  $.ajaxSetup({async: false});
  $.get("/store.aspx?productId=" + prodId + "&quantity=" + quantity + "&options=" + ops);
  $.ajaxSetup({async: true});  
}

我不解的是,用户要是先去加一个产品的page加了商品,那么再去加两个商品的page就有可能成功。如果一个新的
用户先去加两个商品的page,那是永远都加不进去的。一旦成功一次,以后就一直成功直到从浏览器中清除一切数据,
然后关闭重来。

发表于 2013-3-5 10:24 |显示全部楼层
此文章由 joerkky 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 joerkky 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Ajax call是会被cache的。加上$.ajaxSetup({ cache: false });就好了

特殊贡献奖章

发表于 2013-3-5 12:50 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
先找出加不进去的原因是什么
另外,加2个产品为什么不把2个产品的信息一次发过去,要调用2次这个function?
Advertisement
Advertisement

发表于 2013-3-5 13:01 |显示全部楼层
此文章由 featheast 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 featheast 所有!转贴必须注明作者、出处和本声明,并保持内容完整
joerkky 发表于 2013-3-5 11:24
Ajax call是会被cache的。加上$.ajaxSetup({ cache: false });就好了

只有get会被cache,而且只有IE才会cache

发表于 2013-3-5 13:50 |显示全部楼层
此文章由 joerkky 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 joerkky 所有!转贴必须注明作者、出处和本声明,并保持内容完整
featheast 发表于 2013-3-5 14:01
只有get会被cache,而且只有IE才会cache

所有browser默认都会cache get. 所有browser都不会cache post.

发表于 2013-3-6 11:21 |显示全部楼层
此文章由 鱼羊鲜 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 鱼羊鲜 所有!转贴必须注明作者、出处和本声明,并保持内容完整
如果顺序重要,就等第一个执行完,再回调执行第二次
$.ajax({

        success:function(){
                $.ajax({

                });       
        }
});

发表于 2013-3-6 12:18 |显示全部楼层
此文章由 无视 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 无视 所有!转贴必须注明作者、出处和本声明,并保持内容完整
出了这类问题要用fiddler看http request,status code.

如果实在不能用post,  get的时候用datetime作一个timestamp的querystring, 来blast cache.

发表于 2013-3-6 18:13 |显示全部楼层
此文章由 future2521 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 future2521 所有!转贴必须注明作者、出处和本声明,并保持内容完整
看天书的感觉真好。
Advertisement
Advertisement

发表于 2013-3-6 19:17 |显示全部楼层
此文章由 xliu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 xliu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
not in context ,how to debug ?

发表于 2013-3-6 19:33 |显示全部楼层
此文章由 xliu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 xliu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
加两个产品的话,为什么要call 两次。而且如果用get 也不要用ajax,只需要在你那个add_product function里面允许pass multiple products.这样一个url就搞定了

发表于 2013-3-7 15:27 |显示全部楼层
此文章由 鱼羊鲜 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 鱼羊鲜 所有!转贴必须注明作者、出处和本声明,并保持内容完整
楼主说了,是小白

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部