Javascript 将php true或false值分配给JS var
即使在研究之后,我也不知道为什么var是“未定义的”,因此不能正确地作为布尔值计算 我甚至已经厌倦了将其作为字符串进行评估——tcr_user=='true',但没有成功 除了正确/错误的评估之外,其他一切都正常。有人能解释为什么吗Javascript 将php true或false值分配给JS var,javascript,php,Javascript,Php,即使在研究之后,我也不知道为什么var是“未定义的”,因此不能正确地作为布尔值计算 我甚至已经厌倦了将其作为字符串进行评估——tcr_user=='true',但没有成功 除了正确/错误的评估之外,其他一切都正常。有人能解释为什么吗 $('.edit_product_link').addEvent('click',function(e) { if(!validateUser(this.id)) { if(e) e.stop(); alert('<?p
$('.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;
}
}
$('.edit_product_link')。添加事件('click',函数(e){
如果(!validateUser(this.id)){
如果(e)e.停止();
警报(“”);
};
});
函数validateUser(列表器id){
var user_id=;
var公司_管理_id=;
var tcr_user=;
console.log(tcr_user.type);//未定义
if(user_id==lister_id | | user_id==company_admin_id | tcr_user){
返回true;
}否则{
返回false;
}
}
JavaScript变量没有类型属性。
如果使用未定义的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,或者php只是回显json字符串
var javascriptData = JSON.parse(<?php echo $phpData; ?>);
var javascriptData=JSON.parse();
正如@Brad所说,在任何情况下,您都应该为变量tcr\u 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;
}
}
函数validateUser(列表器id){
var user_id=;
var公司_管理_id=;
var tcr_user=;
console.log(typeof tcr_user);//使用typeof检测变量的类型
if(user_id==lister_id | | user_id==company_admin_id | tcr_user){
返回true;
}否则{
返回false;
}
}
echo json_encode($_SESSION['superadmin'])显示了什么?您可能有一行代码是syasvar tcr_user=代码>。如果您要使用If
语句,请将其环绕在var
周围。谢谢您,Pravat-json_encode和json.parse()都返回布尔值true(或false)。布拉德是绝对正确的-在精疲力竭的简短中,我省略了失败错误。感谢你们的经验和时间回顾。“.typeof”仍然返回“undefined”-对我来说是个谜,甚至试图明确地声明它。幸运的是,由于您没有检测到任何错误,它告诉我去别处看看——一个写得不好(而且无效)的安全特性(没有控制台错误)被照亮了。疲惫的眼睛错过了细节。。。谢谢大家。属性不是var构造的一个特性,它只是将一个名称绑定(或重新绑定)到一个值。如果我们执行:Object.prototype.type=function(){return typeof this;}代码>所有对象都将有一个类型属性。@AluanHaddad将定义一个方法,而不是一个普通属性,您必须使用.type()
调用它。可以使用defineProperty使其成为普通属性:Object.defineProperty(Object.prototype,'type',{get:function(){return typeof this;}}})代码>。但是,.type
的这种实现并不总是准确的:[].type//返回“object”
@UselessCode如果您是正确的,我没有实现属性,而是实现方法。然而,我应该知道,JavaScript中的typeof数组
返回的“object”
被烘焙到语言的类型系统中。因此,typeof null
还返回“object”
。。。