2016-08-31 85 views
2

因此,我創建了一個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錯誤

感謝您閱讀這篇很長的文章。一直在搜索互聯網尋找解決方案,並決定最好只是問。我非常感謝任何想法。

+0

你檢查'styleString'正在傳遞的價值? –

+0

檢查瀏覽器的*網絡*控制檯...你看到POST請求嗎?如果是這樣,請檢查請求數據和響應。答案完全是空的嗎? – Phil

+0

另外,你爲什麼要在文檔* ready *處理程序中包裝一個window * load *事件處理程序?似乎多餘 – Phil

回答

-1

嘗試使用此代碼:

jQuery(function(){ 
$('#yourFormName').on('submit', function (e) { //on submit function 
    e.preventDefault(); 
    $.ajax({ 
     type: 'post', //method POST 
     url: 'create-style.php', //URL of page where to pass values 
     data: $('#yourFormName').serialize(), //seriallize is passing all inputs values of form 
     success: function(){ 
       console.log("success"); 
        }, 
    }); 
} 
});