使用javascript/jQuery动态更改内容
我有一个虚拟商店和一个购物篮。此外,我在每一页都有关于篮子里有多少产品和总金额(我的篮子区域)的信息。使用javascript/jQuery动态更改内容
问题是,篮子使用jQuery来更新和删除元素,但每个页面上的“我的篮子”区域在数据库中有一个简单的查询,它不会更新,除非在页面刷新时。
是否有任何解决方案来同步篮子的JavaScript逻辑与'我的篮子区'?
亚历克斯的回答很简短,但恰到好处。
您可以使用XmlHttpRequest向服务器端页面发出GET请求,在该页面中返回代表篮子产品的JSON字符串。然后你可以使用JQuery在你的页面的DOM中创建这些元素。
我认为JQuery本身具有某种抽象的XmlHttpRequest。
我更新了我的回答:) – alex 2011-04-07 08:13:13
你想使用XmlHttpRequest,否则被称为AJAX functions in jQuery。
只需将您的购物车状态发回服务器(添加/更新/删除),然后更新数据库中用户的购物车。
这将使它们保持同步。
我不知道你正在使用什么商店,但你将不得不主要了解它。 下面是你要做的一个例子。
$('.addToCart').click(function(){
//Whatever stuff
$.get('updateCart.php?action=add&item=' + $(this).attr('id') + '&time=' new Date().getTime(), function(data)
{
alert(data); //the response
}
});
是的,你可以让你的动态更新篮子页内的JavaScript代码通过“ajax”向服务器发送更新事件。 jQuery提供了a variety of useful ajax utilities来执行这些更新。
我建议服务器具有篮子的“规范”版本,并且所有更新操作都会收到篮子当前内容的副本,并使用它来调整页面上显示的内容。这是因为用户混乱,你永远不知道他们什么时候可以使用“在新标签页/窗口中打开”。对服务器的更新是获取最新信息的机会。
因此,举例来说,如果用户删除一个项目,这个伪代码:
$.ajax({
url: "url_of_basket_handler",
data: {remove: productId},
success: updateBasketOnSuccess,
error: basketErrorHandler
});
...其中updateBasketOnSuccess
是由所有的处理程序来更新篮下的显示内容的功能基础对响应:
function updateBasketOnSuccess(data) {
// Use the given data to update the display
}
...,同样basketErrorHandler
把手告诉用户有一直在Ajax调用的错误:
function basketErrorHandler(jxhr, statusCode, err) {
// Tell the user something went wrong
}
我可能会使用JSON的篮子处理程序回复来列出篮子内容和其他元数据。
最佳AJAX参考:
http://net.tutsplus.com/tutorials/javascript-ajax/5-ways-to-make-ajax-calls-with-jquery/
var ajax_load = "<img src='img/load.gif' alt='loading...' />";
var loadUrl = "getbasket.php";
$("#mybasket").html(ajax_load).load(loadUrl, null);
然后getbasket.php只需抓住从db和输出(回声/打印)篮HTML例如数据..
<?php
//Connect to mysql db and query
$dbvariables = mysql_fetch_array(...);
?>
My Basket
Items: <?php echo $dbvariables[item_count]; ?>
<?php
for($i=1;$i<=$dbvariables[item_count];$i++){
//Show items in basket..
}
?>
或者类似的东西,我不知道你的篮子是什么样的。
再一次看这里http://net.tutsplus.com/tutorials/javascript-ajax/5-ways-to-make-ajax-calls-with-jquery/
Ajax? http://api.jquery.com/jQuery.ajax/ – 2011-04-07 07:57:16