簡體   English   中英

將jquery腳本中的值傳遞到另一個帶有ajax的php文件中

[英]Pass a value from jquery script into another php file with ajax

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

有什么建議么?

謝謝。

改變 -

url: "view/stylesheet/supercharge.css",

url: "view/stylesheet/supercharge.php",

你的cell是什么? 它是一個全局變量嗎?

嘗試將單元格放在引號中

data: {'cell': jCell},

這也是

view/stylesheet/supercharge.php

好像是問題所在。

問題是通過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並將其放入當前文件的頭部。

希望我能發表評論! Swapnesh是正確的,我只是在回答之前做了一些驗證。 大多數服務器都不會使用php解析擴展名為.css的文件。 將擴展名更改為.php將允許代碼執行,但發送的標頭指示響應是css類型而不是默認的html。 此技術也常用於javascript和純文本文件。

我還可以補充說,一般來說,使用jssery直接使用css方法應用動態css樣式可能更容易/更有效

$('cell #header').css('background-color', jCell);

但話說回來,我不知道你使用ajax的所有原因,因為你沒有詳細說明一般的想法,但采取有益的,剩下的。

編輯:另外一件事(盡管其他人更有可能閱讀此內容)可能需要注意的是短標簽。 不是說你不能使用它們,只要注意它在PHP文檔中的陳述

短標簽...僅在通過short_open_tag php.ini配置文件指令啟用時才可用,或者如果PHP配置了--enable-short-tags選項。

在開發用於重新分發或在不受您控制的PHP服務器上部署的應用程序或庫時,應避免使用短標記,因為目標服務器可能不支持短標記。 對於便攜式可再發行代碼,請確保不要使用短標簽。

從PHP 5.4開始,無論short_open_tag設置如何,短回聲標記<?=始終被識別且有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM