Reputation: 23
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
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
Reputation: 23224
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