我正在尝试将此功能添加到我的PHP购物车
假设我们有两个页面:catalog.php和cart.php
我想做的是:
用户点击catalog.php上的“添加到购物车”按钮 并通过jQuery触发ajax请求到cart.php发送有关添加了哪个产品的信息(这一切都按预期工作)并通过包含刚刚添加的产品而没有页面刷新使cart.php页面更新(这是部分我不能上班。)
如果我并排放置两个页面并点击“添加到购物车”没有任何反应,只有页面刷新(cart.php)我看到新产品已添加。
有没有办法实现这个目标?
编辑:我不太清楚我很抱歉 页面以标准方式呈现,没有框架没有弹出窗口 “app”按预期工作,这对用户来说不太可能是一个问题 “并排”的原因只是因为我想知道一种获取此功能的方法,因为我可以看到自己将来使用它几乎任何东西(来自pageA,CSS等的pageB的DOM操作)答案 0 :(得分:0)
我上次检查过,只有使用window.open
打开的页面(或使用<a target="_blank">
链接打开的页面)可以互相交谈。
所以在catalog.php中调用cart = window.open('cart.php')
,cart
包含打开它的页面的窗口对象,所以你可以这样做:
cart.document.getElementById('whatever').innerHTML = '<p> new content</p>';
要让Windows并排打开而不打开另一个,您可以使用HTML5本地存储,但这需要一些更高级的魔法。
答案 1 :(得分:0)
你可以通过Cart.php
上的AJAX调用来模拟这一点,该调用检查(session / db)以查看是否添加了新内容。
我建议像......
这样,无论使用何种机制添加物品,购物车都会在不久之前看到它们。
显然,您投票的次数越多,购物车更新的速度就越快,但您对系统的负担就越大。
现在直接可能的原因是AJAX请求总是由客户端而不是服务器启动。
还有另外一种可能的解决方法,它省略了频繁的轮询并提供近乎即时的更新,但实施起来有点复杂。
它被称为长轮询(见this answer),实际上会发生什么......
实际上,您的PHP脚本会处理检查数据库/会话/ etc的更新,而客户端只等待“慢”服务器。这就是Twitter如何通过API实现各种提要 - 每条新推文在生成时都会在新行上返回。
请注意,这可能很难实现,因为您只是将轮询从客户端转移到PHP,但从JavaScript的角度来看确实使它更优雅,消除了延迟并减少了浪费的网络开销。 / p>