Используйте переменную PHP в качестве параметров функции Javascript - PullRequest
2 голосов
/ 06 июня 2019

Я использую 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>"; ?>

Проблема в том, что они могут передавать параметры в функцию! Я проверяю элемент в браузере и вижу, когда я вызываю эту функцию, она имеет параметры. Но в теге script ничего нет!

enter image description here

Как я могу это исправить?

Большое спасибо!

Ответы [ 4 ]

3 голосов
/ 06 июня 2019

Вы можете назначить значение php в переменной js в blade-файле, как показано ниже:

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

, а затем используйте файл js, переместите функцию autoFill () в файл js и вызовите этот файл js с помощью blade-сервера. и вызовите автозаполнение (dropDown, emptyDropDown); в файле js для документа. Уже нравится:

$(document).ready(function() {
    autoFill(dropDown, emptyDropDown);
});
3 голосов
/ 06 июня 2019

Похоже, вы забыли о кавычках, когда вы передаете строки в функцию.

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

Вы можете сделать это таким образом, но не должны, потому что Laravel Blade doэто для тебя самого.

<?php echo "<script> autoFill('".$dropDown."', '".$emptyDropDown."'); </script>"; ?>
1 голос
/ 06 июня 2019

Вы не отображали значения в виде строк, поэтому javascript интерпретирует их как переменные, которые не определены.

так вместо autofill(city,ward)

Вы хотите autofill('city','ward')

1000 способов Рима, это будет один:

<?php echo "<script> autoFill('$dropDown', '$emptyDropDown'); </script>"; ?>
1 голос
/ 06 июня 2019

если вы используете 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);
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...