0

過去5日間、これを解決しようとしていますが、何もうまくいきません。この件に関するすべての投稿を閲覧しましたが、何も役に立ちません。私は OpenCart CMS を使用しており、単純な jquery 変数を ajax と post を使用してあるファイルから別のファイルに送信して、css ファイルの背景色を変更できるようにしたいと考えています。ファイルに .php 拡張子が付いていない理由を明確にするために、このチュートリアルhttp://net.tutsplus.com/tutorials/php/supercharge-your-css-with-php-under-the-hood/特にエレガントな方法を読んでください. これがajaxのコードです

$(document).ready(
    function() 
      {
        var headerDefaultColor = "#126FA8";
      $.ajax({
        url:  "view/stylesheet/supercharge.css",
        data: {cell: headerDefaultColor},
        type: "POST",
        async: false,
        success: function(data) {
          console.log("Send");
        },
        error: function(data){
          console.log("Error");
        } 
        })
        .done(function(cell) { console.log("Done success: " + cell); })
        .fail(function() { console.log("error"); })
        .always(function() { console.log("complete"); })
        });

これはcssのコードです

    <?php header("Content-type: text/css"); ?> 

<?php
    $headerColor = null;
    var_dump($_POST['cell']);
    if(isset($_POST['cell'])){
        $headerColor = $_POST['cell'];
    } else {
        $headerColor = "Nothing happends, again!!"; 
    }
?>

#header {
    background-color: <?php echo $headerColor;  ?>;
}

これは私がコンソールに表示するものです:

    Send index.php:103
Done success:  

    <pre class='xdebug-var-dump' dir='ltr'><small>string</small> <font color='#cc0000'>'#126FA8'</font> <i>(length=7)</i>
    </pre>
    #header {
        background-color: #126FA8;
    }

ただし、これはcssファイルで取得したものです。16 進コードを送信する必要がありますが、送信されず、Notice: Undefined index: cell が生成され、出力は次のとおりです。

<br />
<font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: Undefined index: cell in C:\Program Files (x86)\wamp\www\opencart-1.5.5.1\upload\admin\view\stylesheet\supercharge.css on line <i>14</i></th></tr>
<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0004</td><td bgcolor='#eeeeec' align='right'>250160</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='C:\Program Files (x86)\wamp\www\opencart-1.5.5.1\upload\admin\view\stylesheet\supercharge.css' bgcolor='#eeeeec'>..\supercharge.css<b>:</b>0</td></tr>
</table></font>
<pre class='xdebug-var-dump' dir='ltr'><font color='#3465a4'>null</font>
</pre>
#header {
    background-color: Nothing happends, again!!;
}

isset() で試してみましたが、動作しません。 empty() で試してみましたが、動作しませんでした。また、Google から提供されたすべての単一の検索結果も表示され、何も動作しませんでした。したがって、var headerDefaultColor を .css ファイルに送信し、背景色を jquery ではなく php で変更する必要があります (正常に動作します)。ここで何が欠けていますか?

4

3 に答える 3

0

PHPファイルをこれに変更します

<?php 

header("Content-type: text/css"); 

// checks if cell is received from GET or POST, if not assign default value as #fff
$headerColor = isset($_REQUEST['cell']) ? $_REQUEST['cell'] : '#fff';

?>

#header {
    background-color: <?php echo $headerColor;  ?>;
}

CSSファイルを呼び出す場合は、以下のように呼び出します

<link href='view/stylesheet/supercharge.css?cell=#F00' rel='stylesheet' type='text/css' />

于 2013-06-13T14:13:16.047 に答える
0

cssファイルではなくphpファイルでリクエストを取得するため、URLを.cssではなくphpファイルに変更する必要があります

url:  "view/stylesheet/supercharge.php
于 2013-06-15T12:51:10.070 に答える