将变量从js传递给jquery

时间:2011-05-20 23:32:55

标签: javascript jquery

想知道如何从load js传递变量,如:

<script type="text/javascript" src="script.js?myVar=myValue"></script>

并使用并传递给script.js本身? 我之前知道声明变量,但我正在寻找url方式。

提前致谢。

4 个答案:

答案 0 :(得分:3)

javascript无法访问该值。服务器必须查找并代表您将该值插入到呈现的javascript中。

通常情况下,模式更像是这样:

<script type="text/javascript" src="script.js"></script>
<script type="text/javascript">
  ObjFromScript.myVar = 'myValue';
  ObjFromScript.doStuff();
</script>

答案 1 :(得分:2)

您必须在文档中找到<script>标记并提取参数。使用此网站的一个突出示例是带有#xfbml=1主题标签的网站。

但是,正确/好的方法是在script.js中放置任何代码而不是函数,然后调用someFunction(myValue);

答案 2 :(得分:1)

您可以在客户端或服务器上执行此操作。在客户端上,获取script元素并解析src属性。

<script id="myScript" src="script.js?myVar=foo"></script>
<script>
    var s = document.getElementById('myScript');
    s.src; // parse it and extract myVar
</script>

在服务器上,设置路由,以便script.js转到用PHP等服务器端语言编写的某个处理程序。在这种情况下,您可以动态输出script.js。这是PHP中的一个例子。

script.js =&gt;的script.php

<?php 
    header('Content-Type: application/javascript');
    $myVar = $_GET['myVar'];
?>

// optionally expose myVar inside JavaScript
var myVar = <?php json_encode($myVar) ?>;

// regular JavaScript
alert(myVar);
var x = 10;

答案 3 :(得分:0)

您可以使用document.currentScript,但不受广泛支持。

var matches = document.currentScript.src.match(/\?myVar=([^&]+)/),
    myVarParam = matches && matches[1];

或者,您可以尝试使用匹配的URL获取script元素并解析出GET参数。

var scriptPath = 'path/to/this/script.js',
    matches = $('script[src^="' + scriptPath + '"]').attr('src').match(/\?myVar=([^&]+)/),
    myVarParam = matches && matches[1];