文档章节

分享一个js文件中嵌套php会出错的问题

issac宝华
 issac宝华
发布于 2016/03/19 22:26
字数 314
阅读 351
收藏 1

前提:

使用ThinkPHP。后台传一个变量到html页面:$this->assign("variable", $variable);

问题:

在html页面中嵌套js代码,在js的代码中输出这个变量:

<script language="JavaScript">
    var variable =<?php echo $variable;?>;
    alert(variable);
    //这样是可以正常输出的
</script>

 

 

将上面的代码迁移到js文件variable.js中,再在该html页面引入这个js文件,这时候就会出错,不但是输出不来,还是造成js错误,js代码都运行不了。

我的解决方法是:

  1. 写隐藏标签<input type="hidden" id="variable" value="{$variable}"/><!--对!我没有修改定界符-->

    再在js中获取该元素的值

  2. 如果你有使用jq的话,你可以在标签中添加属性:

    <div data-value="{$variable}">我是div</div>

        js: var variable =$("div").attr("data-value");

上面两种方法都有个缺陷,就是variabe都是可见的,只要别人“审查元素”就能看见你的variable是什么,是保密的数据就不建议这样做了。

 

追加:刚刚利用审查元素测试了,如下所说,是可以就算放在js里也是会输出variable的,确实没有安全性的说法。

    

© 著作权归作者所有

issac宝华
粉丝 9
博文 140
码字总数 34397
作品 0
珠海
私信 提问
加载中

评论(2)

宇天
宇天
首先一点,不管是thinkPHP还是别的,模板引擎肯定就只会解析你的模板,js要写在模板里,才可能会被正常解析(这是在后台完成的). 而单独的js,不会被后台去解析,是浏览器解析的,所以那样写肯定会报错.这不是PHP的错,也不是浏览器的错,是用法不对.
另外,所有的输出都是能被看见的,不是说放到js里安全,放到HTML里就不安全.没这说法.
手机码字累,不说了,希望对你有帮助
宇天
宇天
图样图森破啊,少年
页面中存在iframe时刷新页面的问题

近期在开发中遇到一个很奇怪的问题:HTML页面中有个iframe,初始情况下是空的,当点击特定按钮后iframe会加载特定页面。 但很快就发现有点问题了:当iframe加载了特定页面后,此时只要按F5刷...

苗雨顺
2012/09/01
4.7K
0
Discuz 7.2坑爹集锦-js篇

Discuz 7.2坑爹集锦-js篇 在调试DZ过程中firebug经常提示common.js出错,什么“Error: s is null”,“$ is not defined”,“BROWSER not defined”。其实多半和XML有关:当ajax操作时后台P...

mark35
2012/01/12
1K
2
🛠️Hanjst/汉吉斯特更新加JavaScript运行时优化等

这是 Hanjst/汉吉斯特 发布以来的首个主要升级更新版本。这次的主要升级更新的内容包括移除HTML Comments注释行, 优化在 Hanjst include模板文件时的JavaScript运行时环境。 Hanjst 在设计和...

wadelau
01/19
11
0
PHP traits (复用机制)

最近在学习Laravel中,遇到了很多关于Traits ,查了下资料,分享下。 提到 php 的代码复用,我们可能第一时间会想到继承,但是这种单继承语言一旦派生的子类过多,那么会产生一系列的问题,比...

Coding_ff
2017/05/27
0
0
微信JSSDK接入问题记录及源码

今天应客户要求,把一个html5游戏的微信分享功能从第三方库切换到官方库了,官方微信JSSDK。 这其中碰到了一些问题,记录一下(服务端环境为PHP): 1. 开启openssl功能 遇到这样的错误的,是...

lonewolf
2015/02/08
8.4K
0

没有更多内容

加载失败,请刷新页面

加载更多

 介绍一款优秀的通用管理权限快速开发框架

这是一套以权限管理为主的轻量化快速开发框架,配置有流程、专业表单、权限、app、企业微信等基础功能模块,在开发通用软件的效率上很有优势。 软件平台常用研发需求分析 《那些年我们一起做...

我想造火箭
29分钟前
8
0
ElasticDL:蚂蚁金服开源基于 TensorFlow 的弹性分布式深度学习系统

9 月 11 日,蚂蚁金服在2019谷歌开发者大会上海站上开源了 ElasticDL 项目,这是业界首个基于 TensorFlow 实现弹性深度学习的开源系统。 开源地址为:https://github.com/sql-machine-learni...

SOFAStack
36分钟前
6
0
CSS--渐变

一、什么是渐变 多种颜色平缓变化的一种显示效果 二、渐变的主要元素 色标:一种颜色,以及出现的位置,一个渐变至少两种色标 三、渐变的分类 1、线性渐变 以直线的方式来填充渐变色 backgr...

wytao1995
51分钟前
13
0
Java通过模板生成PDF再转换为图片

1、添加maven依赖 <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.13.1</version></dependency><dependency> <g......

醉美閑聖
58分钟前
7
0
SpringBoot-MVC RequestBody中LocalDateTime的自适应配置

请求的json报文中可能会出现 一下几种: ['2019-01-01','2019-01-01 12:03:34','20190101120334'] 但是接收的Request实体类日期字段是LocalDateTime类型 LocalDateTime applyDate; 希望的情况......

汉堡OSC
今天
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部