[英]How to get an array value from php via jquery/ajax and pass it to another php file?
[英]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.