即使在研究之后,我仍然不知道为什么var是“未定义的”,因此没有正确地评估为布尔值。
我甚至厌倦将它评估为字符串 - tcr_user =='true'但没有成功。
除了真/假评价之外,其他一切都很好。有谁能解释为什么?
$('.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;
}
}
答案 0 :(得分:2)
正如@Brad所说,你应该在任何情况下为变量tcr_user赋值:
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;
}
}
答案 1 :(得分:1)
如果你使用 undefined someVar做someVar.type。它会出错:
var i = undefined;
i.type // TypeError: Cannot read property 'type' of undefined
如果您使用定义的 someVar执行someVar.type。它将被定义:
var i = true;
i.type // undefined
你需要在javascript中解析json,或者只需回显json字符串。
var javascriptData = JSON.parse(<?php echo $phpData; ?>);