使用PHP变量作为Javascript函数参数

时间:2019-06-06 07:21:06

标签: javascript php laravel

我正在使用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>"; ?>

问题是它们可以传递参数来起作用!我在浏览器中检查了元素,并看到当我调用此函数时,它具有参数。但是在脚本标签中,什么都没有!

enter image description here

我该如何解决?

非常感谢您!

4 个答案:

答案 0 :(得分:3)

在将字符串传递给函数时,好像您忘记了引号。

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

您可以这样做,但您不应该这样做,因为Laravel Blade可以为您自己完成。

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

答案 1 :(得分:3)

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

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

,然后使用js文件并在js文件中移动autoFill()函数,并使用调用刀片中的js文件。 并在document.ready Like:

的js文件中调用 autoFill(dropDown,emptyDropDown);
$(document).ready(function() {
    autoFill(dropDown, emptyDropDown);
});

答案 2 :(得分:1)

如果您使用的是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);
}

答案 3 :(得分:1)

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

所以不是autofill(city,ward)

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

1000种前往罗马的方式,这就是其中一种:

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