2010-04-08 83 views
0

在我的代码中,我使用JavaScript作为UI和PHP作为后端。我也使用PHP来存储应用程序设置,有时我的UI代码需要访问这些信息。我的配置文件看起来像这样(的config.php):如何加载静态配置信息

$resolution_x = 1920; 
$resolution_y = 1080; 
etc... 

当我需要访问的任何设置形成的JavaScript,我只需使用

<?php echo ... ?> 

直接替代的价值,但它只是不会让我觉得很健壮。

他们有没有这样做的危险,我不知道?有没有更好的方法来做到这一点?

谢谢,

+0

http://stackoverflow.com/questions/1091540/how-to-get-screen-resolution-of-visitor-in-javascript-and-or-php – 2010-04-08 17:06:21

+0

编辑:我的内联代码没有正确解析:我已经正在使用。对不起,混蛋,伙计们。 – Goro 2010-04-08 17:16:26

回答

3

这是你在找什么?

<script type="text/javascript"> 
    var resolution_x = <?php echo $resultion_x; ?>; 
</script> 

我认为这是最强健的方法,除非你想自己用JavaScript找出解决方案。

你可以把它像这样更先进:

的config.php

<?php 
    $congig = array(
     'resolution_x' => 1024, 
     'resolution_y' => 768 
     ); 
?> 

的index.php

<?php 
    include('config.php'); 
?> 
<script type="text/javascript"> 
    var config = <?php echo json_encode($config); ?>; 
    alert(config.resolution_x); 
</script> 
1

也许这是你已经在做的事情,但你可以将echo的配置值变成你的javascri中的一个变量PT。 IE:var Resolution_X = <?php echo $resolution_x; ?>;

+0

是的,那正是我已经在做的事情:请参阅编辑原始帖子 – Goro 2010-04-08 17:18:20

1

如果您需要添加大量选项,逐个回应变量会变得单调乏味。已经有一个更好的解决方案建议使用一个数组和一个include,但是也有可能在后端创建一个对象,该对象具有一个将配置作为数组提取的方法。

然后,您可以通过在PHP中调用HTML/view-file中该方法的结果(如前面的解决方案中所示),或者通过使用来自JS的额外HTTP请求调用该方法额外的开销,但是,如果需要的话,还引入了延迟加载的配置,这可能是有益的,如果大部分的JavaScript不需要配置:

PHP

 
class Configuration 
{ 
    public static function getAll() 
    { 
     return file_get_contents('config.php'); 
    } 
} 

class ConfigController 
{ 
    public function getConfigAction() 
    { 
     $config = Configuration::getAll(); 
     return json_encode($config); 
    } 
} 

JS

 
function getConfig() { 
    /* 
    * Send an HTTP request to the ConfigController's getConfigAction in your 
    * favorite manner here. 
    */ 
} 

var config = getConfig(configUri);