我有一个名为calculated_price
的全局变量,它保存所选产品的价格。我用一个函数更改了这个全局变量的值,然后用另一个函数将它提交给一个带有AJAX后请求的服务器:
var calculated_price;
function calculatePrice() {
calculated_price = $$( '.myInput' ).val();
$$( '.price-holder' ).text( calculated_price );
}
function submitOrder( calculated_price ) {
if( calculated_price !== null || calculated_price !== '' ) {
$$.post( 'http://www.example.com/payment.php', { price: calculated_price},
function( data ) {
alert( 'Data: ' + data );
});
}
}
我使用的是Framework7,所以我使用的JS框架是Dom7,但是这与jQuery非常相似,而且我使用的$$。post函数到目前为止一直在使用。它似乎无法访问calculated_price variable
。我没有在我的代码中的任何地方重新声明此变量(除了全局声明之外,我没有将var
置于其前面)。知道为什么在执行最后一个函数之前这个变量会丢失(submitOrder)吗?我知道变量存在且具有价值,因为在calculatePrice
函数中,我将计算出的价格放在HTML元素中,它确实显示了价格。
答案 0 :(得分:4)
您全局声明calculated_price
,然后使用与函数参数相同的名称。
var calculated_price;
function submitOrder( calculated_price ) { <---- error is here
这是两个不同的变量。当您调用submitOrder时,是否将computed_price作为参数发送?
答案 1 :(得分:1)
除了
行外,您的代码看起来很好if( calculated_price !== null || calculated_price !== '' ) {
你可能想说
if( calculated_price !== null && calculated_price !== '' ) {
因此,当调用函数submitOrder
时,即使calculated_price
未定义,也会执行ajax请求。