从PHP foreach循环中获取Ajax变量(第二部分)
Get Ajax variable from the PHP foreach loops (part II)
由于dianuj的大力帮助,我昨天解决了Ajax循环问题。点击这里!
该解决方案帮助我在每次更改输入区域中的数字时发送和获取数量变量(class="qty")。
现在,我想稍微修改一下Ajax和PHP循环,以获得"total"变量(数量*价格)。我试图通过放置一个带有价格值的"隐藏"输入区域来获得"价格"变量。(请参阅下面的脚本)。脚本可以毫无问题地获得数量(class="qty")和价格(class="price")的变量。
然而,当我放入不同的数量时,脚本只会选择第一个价格,并乘以我更改的数量。
例如,我在函数中有三个不同价格的项目:1.苹果$1x12.橙色$10x33.香蕉$2x4
脚本结果将显示$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)
,我相信每个数量都会有价格值
我还没有确认下面的代码,但它至少会让你走上正确的轨道
var totalVal =0;
$('.qty').each(function() {
var price = $(this).closest('tr').find('.price').val();
totalVal += ($(this).val()*price);
});
相关文章:
- 我怎么能让流星简单模式中的一个字段等于一个js变量,并且仍然让用户填写简单模式的其余部分
- Dropbox oauth认证的IF语句的第二部分是't已触发
- 轨道使用模态变量和局部变量呈现部分
- 访问javascript's全局变量第二次导致未定义
- 从PHP foreach循环中获取Ajax变量(第二部分)
- 在第一部分完成ajax之后加载表单的第二部分
- iOS上陀螺仪移动和触摸移动的JavaScript存在冲突,当第二部分正在使用时,我如何暂停其中一部分
- 在网页上的文本框中键入时删除任何空格第二部分
- Wordpress,输出文章的第一部分,然后输出文章的第二部分
- 用Javascript在现有部分下添加第二部分
- javascript的第二部分在渲染一些JSON之后没有执行
- Node.js / Edge.js -在sql中插入JS变量第2部分
- 对话结束的第二部分
- 使用sessionScope变量计算数据源-变量在部分刷新和完全刷新时被设置为null
- 我可以在文本的第二部分中使用regexp表达式的一部分吗?替换功能
- if语句的第二部分不起作用
- 创建滚动到第二部分后出现的导航栏
- 将变量从部分模板传递到主模板(播放框架)
- 为什么JavaScript代码有时执行第二部分
- 使用Tumblr API在文本帖子中调用图像:第二部分