编辑:找到了解决方案,我编辑了代码,因此,如果有人在不久的将来遇到相同的问题,可以复制我的代码。
我需要将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>
答案 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>