I am wondering on how to solve my problem , but I don't know which is the best way to do this. So I have an html page in which I am passing a id
through $_GET[id_plot])
that I print it like this :
echo "var id_get_plot = '".$_GET[id_plot]."'; ";
That , I suppose is a global variable , that , let's say it clearly, we all hate. The goal is to use this var
inside an external script
.
The solution I am adopting right now is to instanciate a namespace
and then binding the var
to it , like this :
HTML
echo " Model = Model || {};
Model.id_get_plot = '".$_GET[id_plot]."'; ";
SCRIPT.JS
Model = Model || {};
Model.get_id = function(){
console.log(this.id_get_plot) //it prints the right value
});
What I am thinking is : is this a good way to solve my problem? There are other , and if possible, more elegant way to solve this ?
Thank you in advance
Don't generate JavaScript from PHP. Use json_encode() to create a JSON object that your JS can use. This decouples the two languages, and your data will be properly escaped
The simplest thing to put it into a namespace is the following, there are better ways, but this should get you going.
var Model = window.Model || {
getId: function() {
return this.id;
},
// Would be better as a constructor, but since you want a singleton
init: function(id) {
this.id = id;
}
};
// If you need more than one value, make an object out of this....
Model.init(<?php echo json_encode($_GET['id_plot']) ?>)