Craig
Craig

Reputation: 23

Assign php true or false value to JS var

even after researching I am at a loss as to why the var is "undefined" and therefor not correctly evaluated as boolean.

I have even tired evaluating it as a string -- tcr_user=='true' with no success.

Everything else works fine except the true/false evaluation. Can anyone explain why?

$('.edit_product_link').addEvent('click',function(e) {
    if(!validateUser(this.id)) {
        if(e) e.stop();
        alert('<?php echo $objLanguage->GetText('__confirm_deny_edit__')  . '\n' .  $objLanguage->GetText('__confirm_deny_contact_admin__'); ?>');  
    };
});

function validateUser(lister_id) {
    var user_id =  <?php echo json_encode($_SESSION['user_id']); ?>;
    var company_admin_id = <?php echo json_encode($_SESSION['company_admin_id']); ?>;
    var tcr_user = <?php if(isset($_SESSION['superadmin'])) { echo json_encode($_SESSION['superadmin']);}; ?>;

    console.log(tcr_user.type );   // undefined 

    if(user_id == lister_id || user_id == company_admin_id || tcr_user) {
        return true;        
    } else {
        return false;
    }
}

Upvotes: 1

Views: 226

Answers (2)

heroin
heroin

Reputation: 2247

As @Brad said, you should assign value to the variable tcr_user in any case:

function validateUser(lister_id) {
    var user_id =  <?php echo json_encode($_SESSION['user_id']); ?>;
    var company_admin_id = <?php echo json_encode($_SESSION['company_admin_id']); ?>;
    var tcr_user = <?php if(isset($_SESSION['superadmin'])) { echo json_encode($_SESSION['superadmin']);} else echo false; ?>;

    console.log(typeof tcr_user );   // use typeof to detect the type of variable

    if(user_id == lister_id || user_id == company_admin_id || tcr_user) {
        return true;        
    } else {
        return false;
    }
}

Upvotes: 2

Chen-Tsu Lin
Chen-Tsu Lin

Reputation: 23224

JavaScript var don't have type property.

If you do someVar.type with undefined someVar. It will get error:

var i = undefined;
i.type // TypeError: Cannot read property 'type' of undefined

If you do someVar.type with defined someVar. It will get undefined:

var i = true;
i.type // undefined

And you need to parse json in javascript, or php just echo the json string.

var javascriptData = JSON.parse(<?php echo $phpData; ?>);

Upvotes: 1

Related Questions