2016-08-31 50 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"); 
        }, 
    }); 
} 
});