我正在使用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>"; ?>
问题是它们可以传递参数来起作用!我在浏览器中检查了元素,并看到当我调用此函数时,它具有参数。但是在脚本标签中,什么都没有!
我该如何解决?
非常感谢您!
答案 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>"; ?>