是否可以将GET或POST变量传递给外部javascript

时间:2011-01-25 04:53:00

标签: javascript jquery

我想知道是否可以将任何变量传递给外部 java脚本文件

例如

这个

<script type="text/javascript" src="gallery.js"></script> 

我想知道是否可以将参数传递给该脚本文件,如果是,我该如何在外部文件中读取它?也许这样的东西:???

<script type="text/javascript" src="myscript.js?id=123"></script> 

谢谢

4 个答案:

答案 0 :(得分:2)

<script type="text/javascript">x = <?php echo $x; ?>;</script>
<script type="text/javascript" src="gallery.js"></script> 

现在在gallery.js中,可以使用JavaScript变量$x访问PHP变量x的值。确保生成语法正确的JavaScript。

答案 1 :(得分:2)

您没有“将变量传递给外部脚本”,而是下载脚本,并使用常规函数调用传递变量,在客户端计算机中执行脚本。

如果javascript代码要在服务器中执行,那么您可以使用数据库临时保存值或使用服务器端javascript

如果javascript代码是由第三方执行的,与客户端或主机无关,那么您必须将值存储在数据库中。

答案 2 :(得分:1)

单独使用javascript,你可以这样做:

<script type="text/javascript">
function $_GET(q,s) { 
    s = s ? s : window.location.search; 
    var re = new RegExp('&'+q+'(?:=([^&]*))?(?=&|$)','i');

    return (s=s.replace(/^?/,'&').match(re)) ? (typeof s[1] == 'undefined' ? '' : decodeURIComponent(s[1])) : undefined;

}  </script>

然后以这种方式使用javascript函数:

// this code would print "hello world" if it was at http://localhost/index.php?var1=hello&var2=world
var var1 = $_GET('var1');
var var2 = $_GET('var2');
document.write(var1 + " " + var2);

要从javascript的src标记中获取所需的参数,您可以执行以下操作:

// get the src parameter and split it down to the search query string
var src = document.getElementById('example').src;
params = src.split('?');
var var1 = $_GET('var1','?'+params[1]);

归功于Josh Fraser,我从这个答案中解释了这个问题。 http://www.onlineaspect.com/2009/06/10/reading-get-variables-with-javascript/

答案 3 :(得分:1)

tl; dr,是的,但你需要使用服务器端语言

这似乎是解释Web服务器 - 客户端交互的细节的好时机。这是最基本的解释:

当客户端请求文件(页面,图片或脚本)时,服务器会在相应的文件夹中查找该文件。如果找不到,它会发回一个熟悉的404代码,或者如果找到它,它会发回该文件的内容(当然包装在http头文件中)。

对于动态页面(如.php文件),Web服务器的行为必须略有不同。在将它们发送到客户端之前,服务器通过称为解析器的程序运行该文件。然后它将解析器的输出发送回客户端(解析器也可以修改头)。请求变量(URL中的'?'后面的位或POST请求发送的变量)以某种方式可用于动态脚本。在PHP中,它们可以使用$ _GET / POST全局变量。这些变量由服务器而不是客户端解析,因此您可以将它们放在任何地方。

现在,特别针对您的问题,当您使用<script>标记时,客户端会询问href属性指定的文件。这不一定是.js文件,这只是惯例。 type属性告诉客户端它是什么类型的文件。如果您编写PHP(或其他)代码来生成Javascript(即使它只是include 'file1.js'),您可以使用PHP来获取已发送的GET / POST变量。然后发送的Javascript由客户端执行。

很抱歉,如果这包含您已经知道的内容,我只是想完成