将先前的ajax响应值保存到jquery变量中,并将该值添加到下一个ajax响应值中

时间:2018-02-13 09:12:47

标签: javascript jquery ajax

我有一个程序,我可以使用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());



%>

1 个答案:

答案 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);
     }
 });
});