gpt4 book ai didi

php - 从 PHP foreach 循环获取 Ajax 变量(第二部分)

转载 作者:行者123 更新时间:2023-11-28 08:58:04 25 4
gpt4 key购买 nike

由于 dianuj 的大力帮助,我昨天解决了 Ajax 循环问题。点击here !

每次更改输入区域中的数字时,该解决方案都会帮助我发送和获取数量变量 (class="qty")。

现在我想稍微修改我的 Ajax 和 PHP 循环以获得“总”变量(数量 * 价格)。我尝试通过放置带有价格值的“隐藏”输入区域来获取“价格”变量。(请参阅附加的以下脚本)。该脚本获取数量变量(class =“qty”)和价格变量(class =“价格”)没有问题。

但是,当我输入不同的数量时,脚本仅选择第一个价格并乘以我更改的数量。

例如,我的函数中有三件商品,具有三种不同的价格:1. 苹果 1 美元 x12. 橙子 10 美元 x33. 香蕉 $2 x4

脚本结果将显示 $1 * (2+3+4) 而不是正确的 $1*2+$10*3+$2*4(ajax脚本仍然可以毫无问题地获取价格和数量变量)。

我的Ajax和PHP循环如下,看起来他们可以毫无问题地获取和发送数量和价格变量(但只有第一个项目的固定价格):

<script language="JavaScript">
$(document).ready(function() {
$("form").mouseleave( function() {

//get qty value and price value from the loop

var totalVal =0;
$( ".qty" ).each(function() {
totalVal += ($(this).val()*$(".price").val());
});

// get
$.ajax({
type: 'GET',
url: 'getSunBody.php',
data: {
//sent the total variable to php script (xml)
total : totalVal,
},
success: function(data) {
// get XML value
$('#result').html($(data).find('total').text());
$('#result1').html($(data).find('caution').text());

}
});
return false;
});

});
</script>
</head>

<body>
<div id="display">
<form action="sessionCartUpdate.php">
<table width="780" border="0" align="center" cellpadding="4" cellspacing="0">
<?php
foreach( $_SESSION["psn"] as $i => $data ){
?>

<input type="hidden" name="psn" value="<?php echo $_SESSION["psn"][$i];?>">
<tr>
<td bgcolor="#CCCCCC" font color="black"><?php echo $_SESSION["psn"][$i];?></td>
<td bgcolor="#CCCCCC"><?php echo $_SESSION["pname"][$i];?></td>
<td bgcolor="#CCCCCC"><?php echo $_SESSION["price"][$i];?></td>
<td bgcolor="#CCCCCC"><input type="text" class="qty" name="qty[]" value="<?php echo $_SESSION["qty"][$i];?>"></td>

<input type="hidden" class="price" value="<?php echo $_SESSION["price"][$i];?>" >

<td bgcolor="#CCCCCC"><input type="submit" name="btnUpdate" value="update" />
<input type="submit" name="btnDelete" value="delete" />
</td>
</tr><br />

<?php
}
?>
<tr><td colspan="5" align="center">the total:<div id="result" class="box" style="height=350px;"></div><div id="result1" class="box" style="height=350px;"></div>
<div id="result2" class="box" style="height=350px;"></div></td></tr>
</table>
</form>

我还包括我的 php 脚本,如下所示,作为上面的 ajax 脚本的 xml:

<?php
// XML
header("Content-Type: text/xml");
header("Content-Type:text/html; charset=utf-8");

//get total value ("qty * price") from the ajax

$total = (isset($_POST["total"]) ) ? $_POST["total"] : $_GET["total"];

echo "<?xml version=\"1.0\" ?>";

echo "<caculation>";

echo "<total>" . $total . "</total>";


if ($total==0)
echo "<caution>"."please put number!"."</caution>";
else if ($total<=500)
echo "<caution>"."You should buy more!"."</caution>";
echo "";

echo "</caculation>";

?>

我将非常感谢您提供宝贵的建议来帮助我修复上述错误!

最佳答案

有一个问题,.each循环是针对数量而不是价格,所以它选择第一个价格,因为循环是针对数量而不是价格,你应该做这样的事情

<script language="JavaScript">
$(document).ready(function() {
$("form").mouseleave( function() {

//get qty value and price value from the loop

var totalVal =0;
$( ".qty" ).each(function(i) {
totalVal += ($(this).val()*$(".price:eq("+i+")").val());
});

// get
$.ajax({
type: 'GET',
url: 'getSunBody.php',
data: {
//sent the total variable to php script (xml)
total : totalVal,
},
success: function(data) {
// get XML value
$('#result').html($(data).find('total').text());
$('#result1').html($(data).find('caution').text());

}
});
return false;
});

});
</script>

使用.each循环的索引并获取该索引处的价格我使用了jquery选择器:eq(index here)并且我相信会有每个数量的价格值

关于php - 从 PHP foreach 循环获取 Ajax 变量(第二部分),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18166232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com