2010-11-20 28 views
0

为了将动态值传递给js代码,这样做更好吗?将动态参数传递给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文件intead。我在看this question。我肯定不会为获取每个变量而进行AJAX调用(因为它可能看起来像我的问题),因为这种情况不会出现。

谢谢。

回答

1

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

PHP的json_encode()可能会使写出甚至巨大的数组相当容易,而不会使代码混乱很多。

+0

我其实并不是想要做一个AJAX请求来获取每个服务器端的变量,以便在javascript中使用。请检查我的更新。 – 2010-11-20 09:57:44

+0

@sandeepan我看到你有关于单独的JS脚本的观点,这很有道理 - 它是最干净的方式。我个人可能仍然倾向于将动态位放入文档的''中,但我会说这两种方法都是正确的 – 2010-11-20 10:04:13

+0

您是指文档头中的js代码中的动态位?但在你的情况下这是不可避免的?你是否接受你没有遵循最清洁的方式? :) – 2010-11-20 10:09:21

1

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

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

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

+0

@Little Bobby Tables你是对的......编辑标题。请检查我的问题更新。谢谢 – 2010-11-20 09:59:34

+0

@Little Bobby Tables我错了,说我更喜欢AJAX调用分配动态参数,并认为AJAX调用不明智,因为每个Ajax调用都会导致额外的请求。如果传递动态参数是主要需求,那么像我在我的问题更新中写的那样做会更好。除非有服务器端任务,否则在这种情况下不需要AJAX请求。 – 2010-11-20 10:24:40

+0

@Sandeepan:您是否将PHP用于会话管理以外的任何其他功能? – 2010-11-20 11:42:10