如何将多个 PHP 变量传递给 jQuery 函数?

Posted

技术标签:

【中文标题】如何将多个 PHP 变量传递给 jQuery 函数?【英文标题】:How to pass multiple PHP variables to a jQuery function? 【发布时间】:2012-06-18 15:07:05 【问题描述】:

我正在开发一个 Wordpress 插件。我需要将插件目录(可以根据个人的安装而改变)传递给 jquery 函数。

这样做的最佳方法是什么?我可以使用的插件版本在 php 文件中包含了所有 javascript,因此这些函数在被呈现在浏览器中之前与其余内容一起被解析。

我正在研究 AJAX,但我认为它可能比我需要的更复杂。在这种情况下,我可以只使用两个变量(目录,用户没有设置)。

正如我已经阅读了它的良好做法,我试图将 js 和 php 分开。插件初始化时调用js文件:

    //Wordpress calls the .js when the plugin loads
    wp_enqueue_script( 'wp-backitup-funtions', plugin_dir_url( __FILE__ ) . 'js/wp-backitup.js', array( 'jquery' ) );

然后我在.js文件中,需要弄清楚如何生成以下变量:

    dir = '<?php echo content_url() ."/plugins"; ?>';
    dir = '<?php echo content_url() ."/themes"; ?>';
    dir = '<?php echo content_url() ."/uploads"; ?>';

并运行解析以下请求:

    xmlhttp.open("POST","<?php echo plugins_url() .'/wp-backitup/includes/wp-backitup-restore.php'); ?>",true);
    xmlhttp.open("POST","<?php echo plugins_url() .'/wp-backitup/includes/wp-backitup-start.php'); ?>",true);
    xmlhttp.open("POST","<?php echo plugins_url() .'/wp-backitup/wp-backitup-directory.php'); ?>",true);
    xmlhttp.open("POST","<?php echo plugins_url() .'/wp-backitup/wp-backitup-db.php'); ?>",true);
    window.location = "<?php echo plugins_url() .'/wp-backitup/backitup-project.zip'); ?>"; 
    xmlhttp.open("POST","<?php echo plugins_url() .'/wp-backitup/wp-backitup-delete.php'); ?>",true);

内容 URL 和插件 URL 仅在 /plugins/ 上有所不同,因此,如果我很难按,我真的只需要发出一个 PHP 请求,然后将其带入 JS。

【问题讨论】:

您可能对 JQuery 的 serializeArray() 函数感兴趣,可以将变量作为单个数组来回传递。 【参考方案1】:

又快又脏:

<script type="text/javascript">
<?php
    echo 'var myJsObject =' . json_encode(array(
        'dir1' => $directory1,
        'dir2' => $directory2
    ));
?>
    alert(myJsObject.dir1);
</script>

【讨论】:

【参考方案2】:

您的函数可以加载到 .js 文件中,但是您需要的 PHP 变量可以在您在 PHP 页面中初始化插件时给出。举例:

$("#myDiv").startPlugin("<?php echo $directory;?>");

如果您需要来自 php 的信息,您实际上没有选择将其提供给某个地方的插件。对我来说,用 ajax 查询它不是一个好主意。

【讨论】:

【参考方案3】:

没有看到代码有点难,但一般来说,我会在 php 的某个地方输出目录,例如:

<script type="text/javascript">
  var dirs = <?php echo empty($dirs) ? "" : json_encode($dirs); ?>;
</script>

【讨论】:

以上是关于如何将多个 PHP 变量传递给 jQuery 函数?的主要内容,如果未能解决你的问题,请参考以下文章

将PHP变量传递给jQuery函数

如何从 Blade 格式 HTML 将 PHP 变量传递给 JavaScript 函数

如何使用 POST 方法将 javascript/jQuery 变量传递给 PHP [重复]

如何将多个选定的(通过复选框)行 ID 传递给 jQuery 中的 php 脚本?

将php数组传递给jquery函数

将变量传递给 .animate() 函数 JQuery