我想要的是将一个JavaScript部分的颜色值转换为另一个充当css文件的php文件。我看到了一些关于ajax的例子但它们不起作用,尽管.done和.always说数据是发送的。所以这里是脚本部分和颜色值:
var jCell = '#aabbcc';
$(document).ready(function (){
$.ajax({
url: "view/stylesheet/supercharge.css",
data: {cell: jCell},
type: "POST",
async: false })
.done(function(cell) { console.log("success: "+ jCell); })
.fail(function() { console.log("error"); })
.always(function() { console.log("complete"); })
});
这是php文件(充当css),它应该使用$ _post获取值,但它不会:
<?php header("Content-type: text/css; charset: UTF-8"); ?>
<?php
$menuColor = '#121212';
$headerColor = $_POST['cell'];
$bodyColor = '#fffaaa';
?>
#header {
background-color: <?=$headerColor; ?>;
}
有什么建议吗?
感谢。
答案 0 :(得分:3)
改变 -
url: "view/stylesheet/supercharge.css",
要
url: "view/stylesheet/supercharge.php",
你的cell
是什么?它是一个全局变量吗?
答案 1 :(得分:0)
尝试将单元格放在引号中,如
data: {'cell': jCell},
也是这个
view/stylesheet/supercharge.php
似乎是问题所在。
答案 2 :(得分:0)
问题是通过Ajax加载文件不会激活页面中的样式。如果您希望css影响您的网页,则需要将其包含在您的网页中。你需要一些与此相关的东西。注意:这是未经测试的。
在顶部添加:
<script id="phpcss"><?php include(path/to/phpfile); ?></script>
然后在javascript中有这个:
var jCell = '#aabbcc';
$(document).ready(function (){
$.ajax({
url: "view/stylesheet/supercharge.css",
data: {cell: jCell},
type: "POST",
success: function(data) {
$("#phpcss").html(data);
},
async: false })
.done(function(cell) { console.log("success: "+ jCell); })
.fail(function() { console.log("error"); })
.always(function() { console.log("complete"); })
});
这应该从ajax调用中获取返回的css并将其放入当前文件的头部。
答案 3 :(得分:0)
希望我能发表评论! Swapnesh是正确的,我只是在回答之前做了一些验证。大多数服务器都不会使用php解析扩展名为.css的文件。将扩展名更改为.php将允许代码执行,但发送的标头指示响应是css类型而不是默认的html。这种技术也常用于javascript和纯文本文件。
我还可以补充一点,一般来说,使用jquery直接使用动态css样式使用css method
可能更容易/更有效$('cell #header').css('background-color', jCell);
但话又说回来,我不知道你使用ajax的所有原因,因为你没有详细说明一般的想法,而是采取有益的做法并留下其余部分。
编辑:另外一件事(尽管其他人更有可能阅读此内容)可能需要注意的是短标签。不是说你不能使用它们,只要注意它在PHP docs 中的含义短标签...仅在启用时可用 通过short_open_tag php.ini配置文件指令,或者如果PHP 配置了--enable-short-tags选项。
开发应用程序时应避免使用短标签 用于在PHP上重新分发或部署的库 不受你控制的服务器,因为短标签可能没有 在目标服务器上受支持。对于便携式可再发行代码, 一定不要使用短标签。
从PHP 5.4开始,始终识别短回声标记
<?=
无论short_open_tag设置如何,都有效。