将php true或false值赋给JS var

时间:2014-02-09 07:34:38

标签: javascript php

即使在研究之后,我仍然不知道为什么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;
    }
}

2 个答案:

答案 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)

JavaScript var没有type属性。

如果你使用 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; ?>);