2017-02-17 30 views
0

中调用一个函数来清除,我不要求如何从PHP创建JS变量或函数,而是询问正确的方法或最佳实践这样做。如何正确创建JavaScript变量并从PHP

我有一些PHP变量需要在JavaScript中用于稍后进行一些修改,我还需要在初始化这些变量时运行JS函数。

最明显的方式做到这一点是增加一个<script>标签,并在那里进入我的JS的信息,具体如下:

?> 
    <script> 
     $(document).ready(function() { 
      var my_js_string = <?php my_php_string ?> 
      my_js_function(); 
     }); 
    </script> 
    <?php 

这样,我有一个全球性的JS var和功能运行在文件。准备。

但是,这感觉不对。如果我需要从PHP创建多个JS变量,代码将随着脚本和document.ready(s)到处臃肿。即使不需要document.ready,使用这种方法初始化许多JS全局变量也会使代码难以阅读和调试。拥有JS全局变量也是不好的做法。另外如果它是敏感信息呢?你不希望它像任何人都可以访问的全球一样浮动。

任何关于更好方法学的建议?

我想到的一个选择是创建事件,用信息填充事件,然后在适当的.js文件中检索它,创建局部变量,但这可能导致相同的问题,许多不必要的事件浮动周围。

我认为的另一种方式是创建包含数据的HTML元素,无论是纯文本还是data-属性或任何其他方法。这在的一些情况下是一个很好的做法,但我不认为这是当你有很多变量或变量包含你不想在DOM中显示的敏感信息时的最佳方式。

如果这是一个重复的答案,或者你可以指导我解决这个问题的相关文章,我将不胜感激,因为我不知道如何正确搜索这个,并找不到好的资源。

+0

通过AJAX获取'敏感信息'。 – JustOnUnderMillions

+1

但是'可以被任何人访问'是javascript的工作原理。通过浏览器中的'F12'开发者控制台打开,你可以看到并访问你找到的东西(并且操纵/改变它[也是代码本身])。请记住:切勿信任用户 – JustOnUnderMillions

+0

的确如此。 AJAX,然后删除一次使用的信息。我猜AJAX是要走的路,谢谢@JustOnUnderMillions –

回答

1

个人而言,我不喜欢从PHP生成JavaScript,所以我通常会将数据添加到隐藏输入的值,如果它只是一小部分,或者使用AJAX和JSON单独加载数据,这些数据似乎更清晰我,虽然它确实需要一个单独的HTTP请求。

下面是这个使用AJAX和JSON如何做到与jQuery一个简单的例子:你的页面加载

在.js文件:

// When the document is ready 
$(function(){ 
    $.post('get_json.php', function(response){ 
     console.log(response.data) 
    }, 'json')  
}) 

在你get_json.php文件:

<?php 
    // Create an array with the data you want to send back 
    $response = array(
     'data' => 'test' 
    ); 
    echo json_encode($response); 
+0

谢谢!我猜测沿着这条线是一个很好的选择,我只是想知道是否有其他方法。 –