Использовать переменную PHP в качестве параметров функции Javascript

Я использую 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 ничего нет!

Использовать переменную PHP в качестве параметров функции Javascript

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

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

autofill(city, ward) будет передавать два переменныеcity и ward в функцию. Однако остальная часть вашего кода, похоже, указывает на то, что вы, вероятно, хотите передать текстовые строки в свою функцию здесь.
04FS 06.06.2019 09:25

Поместите свои city и ward в кавычки, так как таких переменных нет: <?php echo "<script> autoFill('{$dropDown}', '{$emptyDropDown}'); </script>"; ?>

Justinas 06.06.2019 09:27

Спасибо за ваши ответы. Я понял!

Tomato 06.06.2019 09:31
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
3
1 878
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

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

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

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

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

Правильно он забыл кавычки.

Developer 06.06.2019 09:34

нет, это код javascript. вы должны просто добавить его в свой блейд под определенными вами переменными, и все будет работать

Roman Meyer 06.06.2019 09:50

если вы используете laravel, попробуйте это

<script type = "text/javascript">
autoFill("{{$dropDown}}","{{$emptyDropDown}}");

function autoFill(dropDown,emptyDropDown) {
    console.info("hi");
}

Надеюсь, это полезно

не используя ядро ​​php

<script type = "text/javascript">
autoFill("<?=$dropDown?>","<?=$emptyDropDown?>");

function autoFill(dropDown,emptyDropDown) {
    console.info(dropDown);
    console.info(emptyDropDown);
}

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

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

ты хочешь autofill('city','ward')

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

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

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

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

а затем используйте файл js и переместите функцию autoFill() в файл js и вызовите этот файл js в лезвии, используя . и вызовите автозаполнение (выпадающий, пустой выпадающий); в файле js на document.ready. Например:

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

Спасибо за вашу помощь! Новый совет для меня.

Tomato 06.06.2019 09:33

Другие вопросы по теме