【发布时间】:2013-07-28 00:13:52
【问题描述】:
好的,我正在努力思考如何将一些东西添加到购物车并让它在页面中显示而无需重新加载页面。
所以我试着写一些非常简单的东西,这样我就可以了解逻辑的工作原理和正确编写的方式。在我的示例中,我在 session['cart'] 的页面中有一个 div 和一个下拉菜单。
一个值为“red”的选项和另一个值为“blue”的选项。当我选择值为“红色”的选项时,我希望“红色”显示在位于session['cart'] 中的正文标记之后的 div 中。当我选择值为“蓝色”的选项时,我希望“蓝色”显示在session['cart'] 中。
我正在尝试通过将ajax 发布到名为'cart_update.php' 的页面来执行此操作。我已经为这个更高级的模型苦苦挣扎了一周,我认为写一些简单的东西是个好主意,这样我就可以真正理解和了解真正发生的事情。非常感谢任何帮助!
这是我的代码,我知道它的出路。我只是在努力学习。
index.php
<?php session_start(); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<style type="text/css">
body {
margin-top: 200px;
}
</style>
</head>
<body>
<div align="left" style="display:block;width:200px;height:200px;background:#ccc;border:solid 1px #009966;">Color Chosen<br /><?php echo $_SESSION['cart']; ?></div>
<div align="center"><form method="post" action="">
<select id="color-selection">
<option value="red">Red</option>
<option value="blue">Blue</option>
</select>
</div>
<script type="text/javascript">
$(document).ready(function(){
$("#color-selection").on("change", function(event){
var color = $("#color-selection").val();
var add = "add";
var dataString = {color: color, type: add}; //JSON-formatted string
$.ajax({
type: "POST",
url: "cart_update.php",
data: dataString
});
});
});
</script>
</body>
</html>
这是我的 cart_update.php
<?php
session_start();
$type = json_decode($_POST['type']);
if(isset($_POST["type"]) && $_POST["type"]== $type)
{
$color = json_decode($_POST['color']);
$_SESSION['cart'] = $color;
}
?>
【问题讨论】:
-
什么不起作用?你想达到什么目的?对于 1,您永远不会在任何地方设置变量
color。 -
什么都没有发生...我还添加了 + "type=" + add;到数据字符串
-
你能把你的问题改成你所拥有的吗?这使它更容易。在您现在拥有的代码中,
color没有任何值,因为您从未设置它。 -
我会改变它,但它不会让我
-
无论如何.. 您需要将变量
color和type设置为$(this).closest('form').find('input[name="type"]').val();之类的类型。并为您的 'color' 变量替换 'type' 为 'color'。您需要在单击事件处理程序中设置它们。