因此,我創建了一個Wordpress站點,並希望將數據(由jQuery動態創建的css樣式)發送到PHP。這個原因(與這個問題不完全相關)是將數據寫成一個加載在每個頁面開頭的.css文件 - 這樣做當js執行時沒有可見的'更改'樣式(當然,僅在第一次加載頁面時)。我相信可能有更好的方法來做到這一點。
但回到主要部分(從jQuery發送數據到.php)。我執行(在「前page.php文件」),這是否一個js腳本:
jQuery(function($){
$(window).on("load", function() {
$.ajax({
type: "POST",
url: "create-style.php",
data: { style : styleString },
dataType: "json",
success: function() {
console.log("success");
}
});
});
});
控制檯說,「成功」,所以我假設數據獲得通過創建,style.php。
create-style.php
的寫入功能做到這一點
$file = 'new-style.css';
$style = $_POST['style'];
file_put_contents($file, $style, LOCK_EX);
現在我想的第一件事是具有包含在WordPress的的functions.php的功能。我一般都不太瞭解Wordpress或Web開發,但看起來很直觀,因爲php文件可能在js之前被執行(所以它如何獲取數據?),這似乎很直觀:
In爲了解決這個我重寫create-style.php
爲使用wp_schedule_single_event
,當有人訪問該網站,有輕微的延遲觸發一個cron:
add_action('write_style_cron', function(){
// the above writing function
});
wp_schedule_single_event(time() + 10, 'write_style_cron'); // give it a slight delay to make sure jQuery happens
但是,沒有$ _ POST數據被寫入到文件和做任何測試顯示它是空的。我已經做了很多的測試,並知道:
- cron的功能基本上是工作
-
- 的寫入功能可與測試值
- $ _ POST被顯示爲完全空和我得到的
/wp-cron.php?doing_wp_cron
- $就一個「未定義指數」錯誤射擊
success
- 沒有其他PHP/js錯誤
感謝您閱讀這篇很長的文章。一直在搜索互聯網尋找解決方案,並決定最好只是問。我非常感謝任何想法。
你檢查'styleString'正在傳遞的價值? –
檢查瀏覽器的*網絡*控制檯...你看到POST請求嗎?如果是這樣,請檢查請求數據和響應。答案完全是空的嗎? – Phil
另外,你爲什麼要在文檔* ready *處理程序中包裝一個window * load *事件處理程序?似乎多餘 – Phil