首页 > 解决方案 > 将 PHP 变量传递给 JavaScript 控制台错误

问题描述

我在脚本中遇到了一些障碍。我一直在使用以下代码PHP将变量发送到我的Javascript文件中,以与价格滑块一起使用。

.php

<div class="border p-4 rounded mb-4">
    <div class="mb-4">
        <h3 class="mb-3 h6 text-uppercase text-black d-block">Price</h3>
        <div id="slider-range" class="border-primary"></div>
        <input type="text" name="text" id="amount" data-path="/<?= $foo['uri']['path']['controller']; ?>/<?= $foo['uri']['path']['method']; ?>/<?= $foo['uri']['path'][0]; ?>/<?= $foo['uri']['path'][1]; ?><?php if ($foo['uri']['path']['controller'] != 'store'): ?>/<?= $foo['uri']['path'][2]; ?>/<?= $foo['uri']['path'][3]; ?><?php endif; ?>" data-floor="<?= floor($first['min_sale_price'] / 5) * 5; ?>" data-ceil="<?= ceil($first['max_sale_price'] / 5) * 5; ?>" data-query="?<?php if (isset($foo['uri']['query']['term'][0])): ?>term=<?= urlencode($foo['uri']['query']['term'][0]); ?>&<?php endif; ?>view=<?= $foo['uri']['query']['view'][0]; ?>&sort=<?= $foo['uri']['query']['sort'][0]; ?>&show=<?= $foo['uri']['query']['show'][0]; ?>" class="form-control border-0 pl-0 bg-white" disabled="" />
    </div>
</div>

.js

const sp = document.querySelector('#amount');
var siteSliderRange = function() {
    $("#slider-range").slider({
        range: true,
        min: 0,
        max: sp.dataset.ceil,
        values: [ sp.dataset.floor , sp.dataset.ceil ],
        slide: function(event, ui) {
            $("#amount").val("£" + ui.values[0] + " - £" + ui.values[1]);
        },
        change: function( event, ui ) {}
    });
    $( "#slider-range" ).on( "slidechange", function( event, ui ) {
        window.location.href = sp.dataset.path + "/" + ui.values[0] + "/" + ui.values[1] + sp.dataset.query;
    });
    $("#amount").val("£" + $("#slider-range").slider("values", 0) +
        " - £" + $("#slider-range").slider("values", 1));
};
siteSliderRange();

它工作得很好,除了 silder 代码没有出现在我的主页上并且我收到以下错误:

Uncaught TypeError: Cannot read property 'dataset' of null at HTMLDocument.<anonymous>

我和if围绕函数的声明,它工作得很好......除了 Webpack 再次删除它。

我已经考虑将变量直接实现到 Javascript 文件中(因为这适用于每种情况) - 但我似乎无法正确使用语法......

我试图定义以下变体,然后是 aconsole.log来检查值,我得到以下信息:

var ceil = <?= ceil($first['max_sale_price'] / 5) * 5; ?> // Uncaught SyntaxError: Unexpected token '<'
var ceil = <?php echo ceil($first['max_sale_price'] / 5) * 5; ?> // Uncaught SyntaxError: Unexpected token '<'
var ceil = "<?= ceil($first['max_sale_price'] / 5) * 5; ?>" // Prints: <?= ceil($first['max_sale_price'] / 5) * 5; ?>

我怎样才能做到这一点?PHP 变量绝对是一个数字,而不是字符串。

标签: javascriptphpvariablesconsole

解决方案


推荐阅读