将动态参数传递给js代码 - 哪种更好的做法?

时间:2010-11-20 09:25:32

标签: javascript code-generation dynamic

为了将动态值传递给js代码,这样做会更好吗?

var myVar = '<?php echo addslashes($_SESSION['myVar']); ?>';

或者在运行时进行AJAX调用以获取会话变量并将其分配给myVar?

有什么优点和缺点?

我个人更喜欢AJAX方法。在复杂的数组赋值等情况下,它使代码看起来更好。

想获得专家意见。

更新

据我所知,使用AJAX方法,每个http请求都很重要。但是如果我们在javascript文件中有明确定义的函数,我们只需要提供函数参数。并且每当我们想要调用它们时,参数可以在函数调用中传递,例如,像这样: -

<a onclick="some_function('<?php echo $_SESSION['var'] ?>')">

这就是我通常的做法,在我的项目中,我很少需要在javascript文件中内联它们。我有AJAX调用服务器端处理(当然需要时)。

我这里的基本思想是拥有内联js脚本的单独的js文件。我在看this question。我绝对不会为获取每个变量而进行AJAX调用(因为它可能看起来像我的问题),因为这种情况不会出现。

感谢。

2 个答案:

答案 0 :(得分:1)

AJAX调用是另一个请求,结果不会立即可用 - 直接编写内联动态数据。在这种情况下,我倾向于选择内联方法。

PHP的json_encode()可能会使写出更大的数组变得相对容易,而不会使代码混乱。

答案 1 :(得分:1)

首先,请注意您实际上并没有动态生成Javascript代码;您正在使用PHP将参数的值传递给浏览器。

如果这是代码中PHP的唯一(或主要)功能,最好使用AJAX,而不是使用PHP生成页面本身(即使用.html文件而不是.php)。原因:工作速度更快,因为大多数内容都是静态存储的。

如果您使用PHP生成大部分页面,则无需添加其他请求,如Pekka所述。只是内联它。