IVY DOM


 

人生就像一副复杂拼图
每个人总有属於自己的记忆碎片
优质美国空间-老薛主机|IVY DOM|Flowline|

联系我

RSS




七月 27, 2015

http header冲突解决办法

最近参与到一个wordpress的定制开发,不仅需要定制前台,还需要定制后台,因此用到了functions.php

由于操作流程比较繁琐,因此还用到了javascrript,由此引发了一个header()函数前输出的错误,具体错误信息如下

 

cannot modify header information – headers already sent by

一看就知道这是在header函数之前有输出数据导致的,于是我将functions.php中的javascript代码清除并建立文件admin.js,利用wordpress自带的函数引入javascripts和css文件

 

function myAdminScripts() {  

    wp_register_script( 'default', get_template_directory_uri() . '/admin.js', array('jquery'), '', true );  

    wp_enqueue_script( 'default' );  

    wp_register_style( 'default', get_template_directory_uri() . '/admin.css',  array(), '', 'all' ,true );  

    wp_enqueue_style( 'default' );  

}  

add_action( 'admin_enqueue_scripts', 'myAdminScripts' );

这样一来header错误就会得到解决,后台可以正常访问了,然而我的后台定制功能却失效了,这是因为某些javascript代码是需要用php生成的,包含了一些数据

于是我想到了以下几种解决办法

  1. 将数据隐藏包含在页面DOM中
  2. 动态生成script标签
  3. 将javascript文件改为.php文件
  4. ajax

经过N小时的实践,我发现前两条是无法实现的,会出现递归,变量未定义等问题,果然最简单的办法是无法解决的,于是我只能用ajax

还好wordpress自带jquery,让我省了不少力

先把全局变量的数据写入到本地文件,然后每次运行后台的时候就用ajax去读这个文件

不过因为前台js的某些问题居然还用到cookies(不用html5的localStorage是因为某些浏览器不支持)也是醉了,不过还好最终解决了

聪明如我:)

 

如图所示,红色箭头所指处是php代码生成处

相关文章

返回
  1. 暂无评论。

  1. 暂无 Trackback

You must be logged in to post a comment.