【问题标题】:Use PHP variable as Javascript function parameters使用 PHP 变量作为 Javascript 函数参数
【发布时间】:2019-06-06 15:49:59
【问题描述】:

我正在使用 Laravel,我的刀片视图中有两个 php 变量,如下所示:

$dropDown = $formDataValue['name']
$emptyDropDown = $formDataValue['name'];

我在同一个刀片视图中创建了一个带有两个参数的 Javascript 函数:

function autoFill (dropDown, emptyDropDown) {
    $("#" + dropDown ).change(function() { 

        $.ajax({
            type: "GET",
            url: "https://api.myjson.com/bins/bcnss",

            success: function(response){

                var dataLength = response.length;
                $("#" + dropDown).empty();
                $("#" + dropDown).append("<option value=''>Select</option>");
                for( var i = 0; i< dataLength; i++){
                    var id = response[i].id;
                    var name = response[i].name;
                    $("#" + dropDown).append("<option value='"+id+"'>" + name + " </option>");
                }
            }
        });
    });
}

然后我称之为:

<?php echo "<script> autoFill(".$dropDown.", ".$emptyDropDown."); </script>"; ?>

问题是他们可以将参数传递给函数!我在浏览器中检查元素,我看到当我调用这个函数时,它有参数。但是在脚本标签中,什么都没有!

我该如何解决这个问题?

非常感谢!

【问题讨论】:

  • autofill(city, ward) 会将两个 变量 cityward 传递给函数。然而,您的其余代码似乎表明您可能更愿意将 文本字符串 传递给您的函数。
  • 把你的 cityward 放在引号里,因为没有这样的变量:&lt;?php echo "&lt;script&gt; autoFill('{$dropDown}', '{$emptyDropDown}'); &lt;/script&gt;"; ?&gt;
  • 感谢您的回复。我明白了!

标签: javascript php laravel


【解决方案1】:

当您将字符串传递给函数时,您似乎忘记了引号。

<script>
    $(document).ready(function () {
        autoFill('{{ $dropDown  }}', '{{ $emptyDropDown }}');
    });
</script>

你可以这样做,但你不应该这样做,因为Laravel Blade会为你自己做。

<?php echo "<script> autoFill('".$dropDown."', '".$emptyDropDown."'); </script>"; ?>

【讨论】:

  • 对,他忘了引号。
  • 不,这是 javascript 代码。你应该把它添加到你定义的变量下面的刀片中,一切都会工作
【解决方案2】:

您可以在刀片文件中的 js 变量中分配 php 值,如下所示:

<script>
    var dropDown = '{{$formDataValue['name']}}';
    var emptyDropDown = '{{$formDataValue['name']}}';
</script>

然后使用 js 文件并在 js 文件中移动 autoFill() 函数并使用 . 并在 document.ready 的 js 文件中调用 autoFill(dropDown, emptyDropDown); 就像:

$(document).ready(function() {
    autoFill(dropDown, emptyDropDown);
});

【讨论】:

    【解决方案3】:

    如果你使用 laravel 试试这个

    <script type="text/javascript">
    autoFill("{{$dropDown}}","{{$emptyDropDown}}");
    
    function autoFill(dropDown,emptyDropDown) {
        console.log("hi");
    }
    

    希望对你有帮助

    不使用核心 php

    <script type="text/javascript">
    autoFill("<?=$dropDown?>","<?=$emptyDropDown?>");
    
    function autoFill(dropDown,emptyDropDown) {
        console.log(dropDown);
        console.log(emptyDropDown);
    }
    

    【讨论】:

      【解决方案4】:

      您没有将值呈现为字符串,因此 javascript 将它们解释为未定义的变量。

      所以而不是autofill(city,ward)

      你想要autofill('city','ward')

      1000 条通往罗马的路,这就是其中之一:

      <?php echo "<script> autoFill('$dropDown', '$emptyDropDown'); </script>"; ?>
      

      【讨论】:

        猜你喜欢
        • 2016-05-01
        • 1970-01-01
        • 2013-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-12
        • 2013-11-04
        相关资源
        最近更新 更多