J'utilise Laravel et j'ai deux variables php dans ma vue en lame comme ceci:
<?php echo "<script> autoFill(".$dropDown.", ".$emptyDropDown."); </script>"; ?>
Et je crée une fonction Javascript avec deux paramètres dans la même vue en lame:
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>");
}
}
});
});
}
Alors j'appelle ceci:
$dropDown = $formDataValue['name'] $emptyDropDown = $formDataValue['name'];
Le problème est qu'ils peuvent passer les paramètres pour fonctionner! Je vérifie l'élément dans le navigateur et je vois que lorsque j'appelle cette fonction, il a des paramètres. Mais dans la balise script, il n'y a rien!
Comment puis-je résoudre ce problème?
Merci beaucoup!
p>
4 Réponses :
On dirait que vous avez oublié les guillemets, lorsque vous passez des chaînes dans la fonction.
<?php echo "<script> autoFill('".$dropDown."', '".$emptyDropDown."'); </script>"; ?>
Vous pouvez le faire de cette façon, mais vous ne devriez pas, car Laravel Blade le fait pour vous-même.
<script>
$(document).ready(function () {
autoFill('{{ $dropDown }}', '{{ $emptyDropDown }}');
});
</script>
Bon, il a oublié les citations
non, c'est du code javascript. vous devez simplement l'ajouter dans votre lame sous les variables définies et tout fonctionnera
si vous utilisez laravel, essayez ceci
<script type="text/javascript">
autoFill("<?=$dropDown?>","<?=$emptyDropDown?>");
function autoFill(dropDown,emptyDropDown) {
console.log(dropDown);
console.log(emptyDropDown);
}
J'espère que cela vous sera utile
ne pas utiliser le noyau php
<script type="text/javascript">
autoFill("{{$dropDown}}","{{$emptyDropDown}}");
function autoFill(dropDown,emptyDropDown) {
console.log("hi");
}
Vous n'avez pas rendu les valeurs sous forme de chaînes, donc javascript les interprète comme des variables, qui ne sont pas définies.
donc au lieu de autofill(city,ward)
vous voulez autofill('city','ward')
1000 façons de rome, ce serait une:
<?php echo "<script> autoFill('$dropDown', '$emptyDropDown'); </script>"; ?>
Vous pouvez affecter la valeur php dans la variable js dans le fichier lame comme ci-dessous:
$(document).ready(function() {
autoFill(dropDown, emptyDropDown);
});
puis utiliser le fichier js et déplacer la fonction autoFill () dans le fichier js et appeler ce fichier js lame utilisant. et appelez autoFill (dropDown, emptyDropDown); dans le fichier js sur document.ready Comme:
<script>
var dropDown = '{{$formDataValue['name']}}';
var emptyDropDown = '{{$formDataValue['name']}}';
</script>
Merci pour ton aide! Un nouveau conseil pour moi.
autofill (city, ward)passerait les deux variablescityetwarddans la fonction. Le reste de votre code semble cependant indiquer que vous souhaitez probablement plutôt passer des chaînes de texte à votre fonction ici.Mettez votre
villeetwardentre guillemets, car il n'y a pas de telles variables:Php echo " "; ?>Merci pour vos réponses. J'ai compris!