Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在外部jQuery脚本中使用PHP_Javascript_Php_Jquery_Wordpress - Fatal编程技术网

Javascript 在外部jQuery脚本中使用PHP

Javascript 在外部jQuery脚本中使用PHP,javascript,php,jquery,wordpress,Javascript,Php,Jquery,Wordpress,事先,JS不是我的强项 我有一个外部.js文件,其中包含Smoove.js的初始化信息。此文件正在WordPress插件中使用。我插入了一些PHP来过滤传递到jQuery中的参数。原始文件(smoove init.js)被重命名为smoove-init.php。当我查看页面源代码时,一切看起来都很好,但实际上什么都没有发生。但是,该脚本在转换为PHP之前运行良好。我非常感谢你的建议 谢谢 更新: 非常感谢@brasofilo的提示。对于任何感兴趣的人,我用来实现这一点的最终代码是: /** *

事先,JS不是我的强项

我有一个外部.js文件,其中包含Smoove.js的初始化信息。此文件正在WordPress插件中使用。我插入了一些PHP来过滤传递到jQuery中的参数。原始文件(smoove init.js)被重命名为smoove-init.php。当我查看页面源代码时,一切看起来都很好,但实际上什么都没有发生。但是,该脚本在转换为PHP之前运行良好。我非常感谢你的建议

谢谢

更新:

非常感谢@brasofilo的提示。对于任何感兴趣的人,我用来实现这一点的最终代码是:

/**
 * Outputs filtered selectors to the Smoove.js script.
 *
 * Assigns default values to $args and checks to see if they're being filtered.
 * Adds the default/filtered selectors to a JS variable and outputs to wp_head.
 * Applies the .smoove() to the variable.
 *
 * @param  array $args Array of selectors to which .smoove() applies.
 * @param  string $selectors The string value of the $args array separated by commas.
 */
add_action( 'wp_head', 'run_smoove', 0 );
function run_smoove() {

    $args = array( 'img' );

    if ( has_filter( 'filter_smoove_args' ) ) {
        $args = apply_filters( 'filter_smoove_args', $args );
    }

    $selectors = implode( ', ', $args );

    ?>

    <script type="text/javascript">
        var my_smoove = '<?php echo $selectors; ?>';
    </script>

    <?php

}

不要重命名JS,而是在头部打印一个JS变量,并在
smoveinit.JS
中使用它。类似于(未经测试):


这与使用的概念相同。

尝试将php代码移到脚本标记之外。@Len_D我不能全部移动,因为我仍然需要包含php以输出.smove()的选择器。只要php在调用js之前出现,js就会看到它。我不知道这是否是问题所在,但这是一个快速而简单的尝试。这也没有运气。我甚至试着把剧本直接打印到wp_的头上(见修改后的帖子),但是没有运气。“没有运气”描述的很少。。。你检查HTML输出了吗?尝试了
console.log()
什么?很抱歉。我又仔细考虑了你的建议,并使之生效。非常感谢!:-)没问题,这是人们在没有意识到它并不能描述问题的情况下使用的常用短语。很高兴你成功了:)
jQuery(window).load(function () {
    jQuery( my_smoove ).smoove({
        offset  : '10%',
        moveX   : '-200px',
        moveY   : '0',
    });
});
add_action( 'wp_head', function() { // conditional tags can be used here: codex.wordpress.org/Conditional_Tags
    $args = array( 'img', '.widget' );
    if ( has_filter( 'smoove_args' ) ) {
        $args = apply_filters( 'smoove_args', $args );
    }
    $return = implode( ', ', $args );
    ?>
    <script type="text/javascript">
        var my_smoove = '<?php echo $return; ?>';
    </script>
    <?php
}, 0 ); // priority 0, first to print
$( my_smoove ).smoove({/*etc*/});