Я использую 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 ничего нет!
Как я могу это исправить?
Большое спасибо!
Поместите свои city и ward в кавычки, так как таких переменных нет: <?php echo "<script> autoFill('{$dropDown}', '{$emptyDropDown}'); </script>"; ?>
Спасибо за ваши ответы. Я понял!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Похоже, вы забыли о кавычках, когда передаете строки в функцию.
<script>
$(document).ready(function () {
autoFill('{{ $dropDown }}', '{{ $emptyDropDown }}');
});
</script>
Вы можете сделать это таким образом, но не должны, потому что Лезвие Ларавеля сделает это за вас сам.
<?php echo "<script> autoFill('".$dropDown."', '".$emptyDropDown."'); </script>"; ?>
Правильно он забыл кавычки.
нет, это код javascript. вы должны просто добавить его в свой блейд под определенными вами переменными, и все будет работать
если вы используете 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);
});
Спасибо за вашу помощь! Новый совет для меня.
autofill(city, ward)будет передавать два переменныеcityиwardв функцию. Однако остальная часть вашего кода, похоже, указывает на то, что вы, вероятно, хотите передать текстовые строки в свою функцию здесь.