2013-06-18 3 views
0

Мне интересно, как решить мою проблему, но я не знаю, какой это лучший способ сделать это. Так у меня есть HTML страницу, в которой Я передаю id через $_GET[id_plot]), что я распечатать его, как это:Переменная от html до javascript

echo "var id_get_plot = '".$_GET[id_plot]."'; "; 

Это, я полагаю, это глобальная переменная, что, скажем, это ясно, мы все ненавидеть. Целью является использование этого var внутри внешнего script.

Решение Я принятии прямо сейчас создать экземпляр namespace, а затем связывание var к нему, как это:

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 
     }); 

Я думаю: это хороший способ решить мою проблему? Есть и другие, и, если возможно, более элегантный способ решить эту проблему?

Заранее благодарен

+1

_ "... элегантный способ решить это?" _, Yup, AJAX - это элегантный способ. – elclanrs

+5

Не генерировать JavaScript с PHP. Используйте 'json_encode()' для создания объекта JSON, который может использовать ваш JS. Это отменит два языка, и ваши данные будут должным образом экранированы. –

+0

@elclanrs Обычно я согласен - AJAX - хорошее решение, но это немного тяжеловес, чтобы передать небольшое количество фиксированных данных на страницу. json_encode() выполняется быстро и легко. –

ответ

1

Не генерировать JavaScript с PHP. Используйте json_encode() для создания объекта JSON, который может использовать ваш JS. Это отменит два языка, и ваши данные будут правильно экранированы.

Простейшая вещь, которая помещается в пространство имен, заключается в следующем: есть лучшие способы, но это должно вас заставить.

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']) ?>) 
+0

Это действительно ново для меня. Я не знал, что могу использовать php внутри javascript. Спасибо! – steo

+0

Uhm..и не получает значение из GET-вызова \: – steo

+0

@steo Да там была опечатка, она исправлена, но вы должны были ее найти, потому что синтаксически неверно –

Смежные вопросы