Javascript无法访问全局变量

时间:2016-09-03 11:50:27

标签: javascript php jquery ajax

我有一个名为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元素中,它确实显示了价格。

2 个答案:

答案 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请求。