php smarty web服务开发问题汇总
来源:互联网 发布:淘宝直播怎么开 编辑:程序博客网 时间:2024/06/04 19:45
smarty框架量级轻、上手快,模板和后端分离,对于开发小的工具级别的web服务很适合。因为做的工具很简单,代码主要包含tpl的模板文件和js和php文件,index.tpl作为入口文件,tpl文件中引用js文件响应用户操作,js文件调用后端php服务处理用户的表单提交。
下面罗列一下当时遇到的一些问题。
1. 模版中通过onclick事件触发js方法。调用失败,提示方法undefined
代码:
<inputtype="radio"name="moduletype"onclick= "getModuleType();"value="app"id="moduletype" />
原因:默认的脚本语言是js,无需额外指定language
解决办法:
<script language="JavaScript" src="../js/pageinfo.js"></script> 改为 <script src="../js/pageinfo.js"></script>
2. 在用js操作元素的时候,提示:Uncaught TypeError: Cannot set property'display' of undefined
原因: 浏览器兼容问题,chrome和firefox浏览器通过getElementsByName等方法得到的元素包含子节点
解决办法:需要加循环条件,定位到要操作的子节点。例如:利用type属性值的判断,检查是否是被操作节点。
for(var i=0;i<element.length;i++){
if(element[i].type=="text"){
element[i].disabled="enabled";
element[i].value="";
break;
}
}
3. 提交表单后,对异常情况alert弹窗提示,例如文本不能为空等,关闭弹层后表单刷新(不希望刷新,以保留用户填写的数据)
原因:button的type是submit,所以每次点击都会提交表单,提交后表单刷新
解决办法:修改button type为button,添加onclick事件提交至js处理,由js拦截异常数据,数据无误后js中执行提交表单
4. var data = $("#fpreview").serialize(); 序列化表单中的数据,$符无法识别
代码:
var data = $("#fpreview").serialize();var formdata = new Array();formdata = data.split("&"); if(formdata[0]=="moduletype=core"){ if (formdata[2]=="moduleid="){ alert('请输入模块id,不知道的请点击链接查询文档'); //window.location.history(); return false; } ... }原因:需要引入jquery.js
解决办法:
http://www.jq22.com/jquery-info122 下载最新的jquery文件,存放到工程目录中,模板中添加引用
<scripttype="text/javascript"src="../jquery-2.1.4/jquery.js"></script>
代码说明:serialize函数返回字符串,可以利用split(“&”)函数拆解字符串,返回的结果是数组,就可以对数据进行处理了。
5. js中提交表单的方法
以下两种表单提交方法,注意name不唯一,Id唯一。
document.getElementById("fpreview").submit();
document.getElementsByName("fpreview")[0].submit();
6. js调试方法可以在浏览器控制台console中直接写简单的js语句执行,也可以通过console.log();进行调试。
7. php中的“”和‘’
php对""内的内容进行解析,即如果echo "$is_pay";就是输出的$is_pay的值20,而对于''内的内容不进行任何操作直接输出,即echo'$is_pay';得结果为$is_pa
8. php代码中通过exec执行系统命令失败
解决办法:需要在php.ini中注释掉disable_functions
9 .工具中用到了跨机器的rsync服务,相关配置说明如下:
检查是否安装rsync了,ps axu | grep rsyncd
如果没有,安装rsync,yum -y install rsync
创建/etc/rsyncd.conf文件
修改配置文件中的hosts allow,加上ip,允许部署test.weibo.com代码的机器访问
vim /etc/rsyncd.conf
启动rsync:/usr/bin/rsync --daemon
10. smarty部署到服务器后,页面出不来
解决办法:Smarty编译过的所有模板文件的存放目录地址默认是:“./templates_c”。Linux服务器上创建这个目录,你还需要修改此目录的权限,使它有写的权限
附上几个smarty的学习参考文章:
· http://www.jb51.net/article/35758.htm
· http://wenku.baidu.com/link?url=No8P9UxLj3-ISAM__Grq-ESSIwT4euqhmxvLo6iMmF_azLdraXsf24-o8zNpV8aJRXQ2ml_JO5aAmTz_PELBKMAT_CPuBKvNVvTIlEEH7pu
· http://www.php100.com/html/php/lei/2013/0904/3704.html
- php smarty web服务开发问题汇总
- PHP开发Web服务
- web开发问题汇总
- PHP开发问题汇总
- 【PHP web 2.0 开发实践】2.9 Smarty 模板引擎
- PHP做Web开发的MVC框架(Smarty使用说明 )
- web开发中问题汇总
- php项目开发问题汇总
- Centos7 php web开发服务启动项
- web开发中,中文乱码问题汇总
- WEB开发各种问题及解决方法汇总
- EAS-Web开发环境问题汇总
- Web前端开发的问题汇总
- Web开发中文乱码问题汇总
- Web开发中文乱码问题汇总
- FlEAPHP + Smarty 进行php开发
- SMARTY插件开发PHP程序
- php开发之smarty一
- 命名实体识别评估指标
- vue-cli-webpack模板配置全解析-2
- CSS实现背景不随浏览器滚动的方法
- java.lang.ClassCastException(java强制类型转换异常)
- Java多线程-多线程的引入
- php smarty web服务开发问题汇总
- js基于谷歌地图API绘制可编辑圆形与多边形
- FAT12中文件目录项时间、日期对应字节问题
- 神龙云服务器,值得期待
- Android Framework解析
- HDACM 1040 As Easy As A+B
- 1028. 人口普查(20)
- react路由补充部分(exact、八个路由示例)
- mongodb 数据备份与还原操作--备份 还原 导出 导入:CSV,JSON,BOSN,解决中文乱码