将AJAX响应设置为javascript变量以重复使用

时间:2019-08-07 07:21:18

标签: javascript jquery ajax

编辑:找到了解决方案,我编辑了代码,因此,如果有人在不久的将来遇到相同的问题,可以复制我的代码。

我需要将AJAX响应设置为变量,以便可以在下一个js脚本中使用它。如何将AJAX响应设置为变量? 我不太擅长javascript,所以可能只是拼写错误或其他东西。 这是我的代码

<script type="text/javascript">
var delivery; // declare of variable to make it "global"
$(document).ready(function() {
    $("#jumlah").bind("input change paste keyup", function() {
        var qty = $(this).val();
        $.ajax({
                type: 'POST',
                url: '../component/quantity.php',
                data: {
                jumlah: qty,
                id:<?php echo $hasil['id']; ?>
                },
                success: function (response) {
                // We get the element having id of display_info and put the response inside it
                delivery = parseFloat(response); // remove the "var" here so you take the cur variable and don't set a new one in the scope of this function.
                }
        });
    });
});
</script>

<script type="text/javascript">
$(document).ready(function() {
        $("select").change(function() {
            var total = delivery;
            $('select option:selected').each(function() {
                total += parseFloat($(this).data('price'));
            });
            var updatePrice = document.getElementById('jumlah').value;
            var grandTotal = total * updatePrice;
            $(".total").val(grandTotal);
            $(".total").html(grandTotal.toLocaleString());
        });
        $("#jumlah").bind("input change paste keyup", function() {
            var total = delivery;
            $('select option:selected').each(function() {
            total += parseFloat($(this).data('price'));
              });
              var updatePrice = $(this).val();
            var grandTotal = total * updatePrice;
            $(".total").val(grandTotal);
            $(".total").html(grandTotal.toLocaleString());
        });

});
</script>

4 个答案:

答案 0 :(得分:1)

  

窗口对象代表浏览器中打开的窗口。

window是一个对象,您可以将任何属性添加到window

success: function (response) {
    window.deliveryResponse = response;
}

因此您可以在任何其他js文件中使用此响应。

other.js

(window.deliveryResponse) && console.log(window.deliveryResponse)

答案 1 :(得分:0)

您要寻找的是scopes。根据设置变量的方式和位置,范围会发生变化。 对于您的情况,您需要一个可全局访问的文件,因此应将其放在顶部。您只需要声明它,而无需分配任何值。

<script type="text/javascript">
var delivery; // declare of variable to make it "global"
$(document).ready(function() {
    $("#jumlah").bind("input change paste keyup", function() {
        var qty = $(this).val();
        $.ajax({
                type: 'POST',
                url: '../component/quantity.php',
                data: {
                jumlah: qty,
                id:1
                },
                success: function (response) {
                // We get the element having id of display_info and put the response inside it
                delivery = parseFloat(response); // remove the "var" here so you take the cur variable and don't set a new one in the scope of this function.
                }
        });
    });
});
</script>

第二部分

<script type="text/javascript">
$(document).ready(function() {
        $("select").change(function() {
            var total = delivery;
            $('select option:selected').each(function() {
                total += parseFloat($(this).data('price'));
            });
            var updatePrice = document.getElementById('jumlah').value;
            var grandTotal = total * updatePrice;
            $(".total").val(grandTotal);
            $(".total").html(grandTotal.toLocaleString());
        });
        $("#jumlah").bind("input change paste keyup", function() {
            var total = delivery;
            $('select option:selected').each(function() {
            total += parseFloat($(this).data('price'));
              });
              var updatePrice = $(this).val();
            var grandTotal = total * updatePrice;
            $(".total").val(grandTotal);
            $(".total").html(grandTotal.toLocaleString());
        });

});
</script>

编辑:修复了代码。变量必须在函数之外。

答案 2 :(得分:0)

由于ajax调用是异步的,因此无法确定delivery变量是否未定义。 对于您而言,这也不起作用,因为该变量是在callback范围内定义的。为了确保定义了传递响应,请创建如下函数:

function onDelivery(delivery) {
   ....(rest of second script)
}

将此功能传递给success并按原样使用delivery

答案 3 :(得分:0)

尝试一下:-

<script type="text/javascript">
    var delivery; // make your variable delivery as global so you can use it where you want.
    $(document).ready(function() {
        //you can use it here or anywhere in script you want to re-use it.
        //put your code as per your functionality.
    });
    </script>