我有一个考试(明天),涵盖html,javascript,ajax,php,mysql和apache。我一直在检查以前的考试,其中一个问题是为显示订单表单的程序编写代码,但我坚持使用Ajax来保持总(价格)框更新为产品是订购的。
我有它工作,但只有输入一次金额。在我的解决方案中,如果有人去了并改变了数量(比如从1到3)那么它将增加3个该产品的价格显然不是理想的解决方案。我意识到需要添加循环,但经过几个小时的尝试后,我无法正常工作。我意识到这个确切的问题不会出现在考试中,但我想先了解它,因为会有类似的东西。
在实际的html代码中,根据数据库中的内容动态创建表单。生成的文本框使用产品的ID作为文本框ID,名称为amt [],以便可以将这些文件发送到getTotal.php以计算成本。
这是在文本框的onchange上激活的javascript / ajax:
function getAmt(txtBox){ //in solution won't need to use this text box
var xhr = new XMLHttpRequest();
var id = txtBox.id; //id from the textbox - in solution won't need these two
var amt = txtBox.val; //value that has been typed into the textbox
var total = document.getElementById("total").value; //get current total value
xhr.onreadystate = function(){
if(xhr.readyState==4 && xhr.status == 200)
{
var result = xhr.responseText;
document.getElementById("total").value = result;//place new total in form
}
}
xhr.open("GET", "getTotal.php?amt="+amt+"&id="+id+"&tot="+tot);
xht.send(null);
}
为了获得我想要的东西,而不是使用当前总数而只使用当前文本框,每次都有一个更改来处理每个文本框并用新总数覆盖总数。 要做到这一点,我没有传递txtBox值,因为我需要遍历所有id& s&来自amt []
的值此代码执行此操作:
var arrayAmt = document.getElementsByName("amt[]");
var id;
var amt;
for(i=0; i<arrayAmt.length; i++)
{
id = arrayAmt[i].id;
amt = arrayAmt[i].value;
}
我只是被困在哪里放置for循环,或者ajax调用的哪一部分进入循环。
我昨天尝试了很多不同的格式,并且失去了大量的学习时间。
我真的很感激有关如何使这项工作的任何建议
(不能使用其他任何东西,比如jQuery)
干杯