繁体   English   中英

将变量从js传递到jquery

[英]pass a variable from js to jquery

想知道如何从加载js传递变量,例如:

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

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

提前致谢。

javascript将无法访问该值。 服务器将不得不寻找该值,并代表您将该值插入呈现的javascript中。

通常,这种模式更像这样:

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

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

但是,适当/不错的方法不是将任何代码放入函数中,而是将函数放入script.js ,然后调用someFunction(myValue);

您可以在客户端或服务器上执行此操作。 在客户端上,获取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 => 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;

您可以使用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];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM