将jquery脚本中的值传递到另一个带有ajax的php文件中

时间:2013-06-10 15:24:12

标签: php javascript ajax jquery

我想要的是将一个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; ?>;
}

有什么建议吗?

感谢。

4 个答案:

答案 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设置如何,都有效。