[英]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.