我做了一个页面index.php包含三个框架top、left、right,框架中包含top.php,left.php,right.php,然后我想在框架里面加上更换主题的功能,于是在top.php中加入两个按钮,一个id为red,一个id为blue,那么针对两个主题我做了两个对应的样式文件,red.css和blue.css.我想的效果是当点击red的时候,top.php,left.php,right.php的样式统一调用red.css文件,当点击blue时,统一调用blue.css文件。这样也就实现了主题的更换,我将css的路径存到数据库表里,表名称为tb_css,新增一条数据id=1,name=css,address=css/style.css,我想通过动态的更新和调用该条数据的address来达到同一时间更换所有页面的样式这样的目的:
<link href="<?php echo $info['address']?>" rel="stylesheet" type="text/css" />($info['address']是从数据库中查询的address的数据,数据库查询语句省略)。top.php,left.php,right.php三个页面的头部统一都用了这句话,然后因为要达到同一时间加载新的样式且不能跳转页面,我想到了ajax来处理,问题就出在这里。$("#red").click(function(){
top.php的ajax语句:
$.ajax({
type: "POST",
url: "chuli.php",
data: {
css:"css/style2.css",
},
dataType: "json",
success: function(data){
if(data.success){
alert("你的主题已经变成蓝色!请刷新,路径为"+data.css);
}
},
error: function(jqXHR){
alert("发生错误:" + jqXHR.status);
},
});
});top.php的按钮:
<ul>
<li><a href="" id="blue">蓝色</a></li>
</ul>chuli.php通过接收ajax传过来的css地址更新数据库并返回一个json格式的数据:
$cssad = $_POST['css'];
$link = mysql_connect('localhost','root','');
mysql_select_db('db_blog',$link);
mysql_query("update tb_css set address='$cssad' where id=1",$link);
$result=array("success"=>true,"css"=>$cssad);
echo json_encode($result);
此时样式改变了,数据库里css的路径也变了,但是服务器没有success和css的返回值,页面弹出“发生错误:0”;当我把数据库更新语句干掉,此时服务器才有success和css的返回值,页面弹出:“你的主题已经变成蓝色!请刷新,路径为css/style2.css。显然在ajax的处理页面不能有数据库的操作,一旦有,即使达到了操作的目的,返回值也将失去了,这是为什么呢?还有我如何才能让ajax或者利用其它方式达到既返回值又在同一时间把数据库进行更新而不跳转页面呢?
<link href="<?php echo $info['address']?>" rel="stylesheet" type="text/css" />($info['address']是从数据库中查询的address的数据,数据库查询语句省略)。top.php,left.php,right.php三个页面的头部统一都用了这句话,然后因为要达到同一时间加载新的样式且不能跳转页面,我想到了ajax来处理,问题就出在这里。$("#red").click(function(){
top.php的ajax语句:
$.ajax({
type: "POST",
url: "chuli.php",
data: {
css:"css/style2.css",
},
dataType: "json",
success: function(data){
if(data.success){
alert("你的主题已经变成蓝色!请刷新,路径为"+data.css);
}
},
error: function(jqXHR){
alert("发生错误:" + jqXHR.status);
},
});
});top.php的按钮:
<ul>
<li><a href="" id="blue">蓝色</a></li>
</ul>chuli.php通过接收ajax传过来的css地址更新数据库并返回一个json格式的数据:
$cssad = $_POST['css'];
$link = mysql_connect('localhost','root','');
mysql_select_db('db_blog',$link);
mysql_query("update tb_css set address='$cssad' where id=1",$link);
$result=array("success"=>true,"css"=>$cssad);
echo json_encode($result);
此时样式改变了,数据库里css的路径也变了,但是服务器没有success和css的返回值,页面弹出“发生错误:0”;当我把数据库更新语句干掉,此时服务器才有success和css的返回值,页面弹出:“你的主题已经变成蓝色!请刷新,路径为css/style2.css。显然在ajax的处理页面不能有数据库的操作,一旦有,即使达到了操作的目的,返回值也将失去了,这是为什么呢?还有我如何才能让ajax或者利用其它方式达到既返回值又在同一时间把数据库进行更新而不跳转页面呢?
你可写一个表单提交的 chuli.php,就可观察到错误是什么了
注释掉 dataType: "json",
在 success: function(data){ 里 alert(data);
也可以看到错误信息
你返回 的 数据 有问题 ,不是纯粹的json,不信你在回调 函数error 里
alert(JSON.stringify(jqXHR));
直接把数据post到chuli.php看看返回什么,先不用ajax