我有一个程序,我可以使用ajax获得价格值,我希望下次上一个价格值可以加到当前价格值时获得价格值。
但问题是当我得到当前价格并且在我可以获得下一个价格值之后,之前的价格无法保持它可以覆盖下一个价值并且我无法添加值
解决方案是什么帮助我
在JQUERY中
$(document).on('change','.searchAmount',function()
{
var id=$(this).attr("id");
var amount=$('#'+id).val();
var rate=$('#rate'+idd).val();
var cgst=$('#cgstrate'+idd).val();
var sgst=$('#sgstrate'+idd).val();
$.ajax({
url:"SellSameStateAmountChange.jsp",
method:"post",
dataType:'json',
data:{amount:amount,rate:rate,cgst:cgst,sgst:sgst,qty:qty},
cache:false,
success:function(data)
{
var sum=0.0;
$('#rate'+idd).val(data.price);
sum+=data.amount;
alert(sum);//Like this
}
});
});
在JSP中
<%--
Document : SellSameStateAmountChange
Created on : Feb 12, 2018, 8:10:43 PM
Author : Lenovo
--%>
<%@page import="org.json.JSONObject"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page language="java" %>
<%@page import="java.sql.*" %>
<%@page import="java.util.*" %>
<%
double amount=Double.parseDouble(request.getParameter("amount"));
double rate=Double.parseDouble(request.getParameter("rate"));
double cgst=Double.parseDouble(request.getParameter("cgst"));
double sgst=Double.parseDouble(request.getParameter("sgst"));
double qty=Double.parseDouble(request.getParameter("qty"));
double gst=cgst+sgst;
double changedRate=rate*qty;
double price=amount-(gst/100)*changedRate;
JSONObject json=new JSONObject();
json.put("price",price);
json.put("amount",amount);
out.print(json.toString());
%>
答案 0 :(得分:0)
将var sum=0.0
移到ajax回调之外并更改事件,以便它不会重置&#34;重置&#34;每一次。
// Moved to here
var sum=0.0;
$(document).on('change','.searchAmount',function()
{
var id=$(this).attr("id");
var amount=$('#'+id).val();
var rate=$('#rate'+idd).val();
var cgst=$('#cgstrate'+idd).val();
var sgst=$('#sgstrate'+idd).val();
$.ajax({
url:"SellSameStateAmountChange.jsp",
method:"post",
dataType:'json',
data:{amount:amount,rate:rate,cgst:cgst,sgst:sgst,qty:qty},
cache:false,
success:function(data)
{
// removed from here
$('#rate'+idd).val(data.price);
sum+=data.amount;
alert(sum);//Like this
}
});
});
请注意,这会生成一个&#34;全局变量&#34;这通常是不受欢迎的,所以有办法解决这个问题,例如使用命名空间或直接在元素上存储总和。
例如:
// Moved to here
var sum=0.0;
$(document).on('change','.searchAmount',function()
{
// setup variables skipped for brevity
$.ajax({
url:"SellSameStateAmountChange.jsp",
method:"post",
dataType:'json',
data:{amount:amount,rate:rate,cgst:cgst,sgst:sgst,qty:qty},
cache:false,
success:function(data)
{
$('#rate'+idd).val(data.price);
var sum = $(this).data("sum")
sum+=data.amount;
$(this).data("sum", sum);
alert(sum);
}
});
});