簡體   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