PHP Javascript AJAX填充和计算几个输入字段-只有一个函数填充
PHP Javascript AJAX fill and calculate several input fields - only one function fills?
我试图使用Javascript/ajax/php填写表单,但问题是,我的函数只填写一个所需的表单和停止,即使我已经从服务器得到了第二个响应。
代码:开始填充的函数
function luePankkiviivakoodi(str) {
if (str==null) { //are we NOT injecting variables directly into the code, if not - Prompt for the barcode, and set the variable
var str = prompt("Valmis vastaanottamaan", "");
}
if (str==null) { //someone pressed abort on the prompt, we return
return;
}
newstr = str.split(' ').join(''); // remove spaces
if (str=="") { //is the string empty? -> return
return;
}
if (window.XMLHttpRequest) { //AJAX code
xmlhttp=new XMLHttpRequest();
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
eval(xmlhttp.responseText);
//we set some fields, no problem
document.getElementById('P_VII').value = viite;
document.getElementById('IBAN').value = saajatili;
document.getElementById('laskun_summa').value = summa;
document.getElementById('eräpäivä').value = eräpäivä;
//trigger other functions
getKassasumma(summa); //AJAX for accesing the database and calculating the sale price
DevideIntoCells(); //AJAX for accessing the database and dividing a sum into different cells
validateSumma(); //Validates the sum, and tells the user if it's OK
}
}
xmlhttp.open("GET","dataminer.php?question=pankkiviivakoodi&q="+newstr,true);//open AJAX connecttion
xmlhttp.send();//send stuff by AJAX
}
getKassasumma:
function getKassasumma(str) {
if (str=="") {
return;
}
if (window.XMLHttpRequest) {
xmlhttp=new XMLHttpRequest();
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
eval(xmlhttp.responseText);
}
}
kale = document.getElementById("TOS_K_ale").value;
xmlhttp.open("GET","dataminer.php?question=kassasumma&q="+str+"&kale="+kale.replace("%", "p")+"&nro="+document.getElementById("S_NRO").value,true);
xmlhttp.send();
}
DevideIntoCells:
function DevideIntoCells() {
str = document.getElementById('tiliöintitapa').value;
if (str==null) {
return;
}
if (window.XMLHttpRequest) {
xmlhttp=new XMLHttpRequest();
document.getElementById("spinwheel3").style.visibility = "visible";
}
xmlhttp.onreadystatechange=function() {
//alert('OK! val= '+xmlhttp.readyState);
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
//alert('OK!');
eval(xmlhttp.responseText);
//alert('OK2!');
document.getElementById("spinwheel3").style.visibility = "hidden";
//alert('OK3!');
calculateSumma();
}
}
xmlhttp.open("GET","dataminer.php?question=percentages&q="+str+"&nro="+document.getElementById('S_NRO').value,true);
xmlhttp.send();
}
validateSumma(只是一些数学):
function validateSumma() {
float = document.getElementById('summabox').value;
float = float.replace(",",".");
summa = parseFloat(float);
if (summa < 0) {
summa = 0
};
kassasummaunp = document.getElementById('laskun_summa').value;
kassasummafloat = kassasummaunp.replace(",",".");
kassasumma = parseFloat(kassasummafloat);
if (kassasumma < 0) {
kassasumma = 0
};
if (kassasumma == 0 || summa == 0) {
prosentti = "0%";
}
else {
prosentti = summa / kassasumma * 100;
prosentti = Math.round(prosentti*Math.pow(10,2))/Math.pow(10,2);
prosentti = prosentti+"%";
};
if (prosentti == "100%") {
is100 = 1;
}else {
is100 = 0;
}
document.getElementById('prosentti').innerHTML = prosentti;
if (is100 == 1) {
document.getElementById('prosentti').setAttribute("style", "color:green");
} else {
document.getElementById('prosentti').setAttribute("style", "color:red");
}
puuttuvaEuro();
}
这里的问题代码是getKassasumma(summa);和DevideIntoCells();。我禁用其中一个,另一个工作,我启用它们,DevideIntoCells停在document.getElementById("spinwheel3").style之前的某个地方。可见性= "hidden";,可能在eval(response)中,因为getKassasumma已经完成了ajax请求并杀死了这个请求。反过来也是一样。
AJAX答案:DevideIntoCells:
var KP_osuus = parseFloat('40');
laskunsumma = parseFloat(document.getElementById('laskun_summa').value);
onepercent = laskunsumma/100;
newvalue = onepercent*KP_osuus;
document.getElementById('box1.5').value = newvalue;
var KP_osuus = parseFloat('60');
laskunsumma = parseFloat(document.getElementById('laskun_summa').value);
onepercent = laskunsumma/100;
newvalue = onepercent*KP_osuus;
document.getElementById('box2.5').value = newvalue;
AJAX答案:getKassasumma
var kassasumma = '477.99€';
document.getElementById('kassasumma').value = kassasumma;
如果您需要澄清,请询问!
编辑:只是为了清楚,这不是AJAX的问题,而是javascript。
我认为你是"游泳",我们怎么说的。如果您从AJAX开始,我建议您使用像jQuery这样的框架,它的$.get()
或$.post()
函数。它将为您完成所有需要的AJAX逻辑。
尝试使xmlhttp
本地,即
var xmlhttp;
因为您覆盖了您在事件侦听器中引用的xmlhttp
,所以当侦听器被调用时,它们都看到相同的响应。
在每个函数的开头。为了兼容,也使用send(null)
代替send()
。
相关文章:
- 从确认框中预填充输入文本框
- 点击填充输入的按钮&提交
- 如何自动填充输入文本框值以与名称相同
- 使用 JSON 数组填充输入字段
- 使用 Jquery 在 SharePoint 2007 上自动填充输入文本
- 如何使用Javascript填充输入文本字段
- IE JavaScript参数和填充输入字段
- 使用其他输入值自动填充输入
- 在表单提交中填充输入字段
- AngularJS-用下拉菜单填充输入文本字段
- 如何使用选中的复选框文本自动填充输入文本字段
- 如果选择'其他'然后填充输入字段
- casperjs根据他的xpath填充输入
- Shiny中未读取的自动填充输入
- Javascript复选框填充输入并将不同的值传递给表单
- 壁虎浏览器不会在加载时填充输入
- 用网址图像填充输入
- 单击用文本填充输入框
- 如何使用 Javascript 动态加载 iFrame 源代码和自动填充输入表单
- 如何用数据库中的值填充输入文本字段 单击复选框