【问题标题】:How to get variable from url for .js file?如何从 .js 文件的 url 获取变量?
【发布时间】:2013-05-08 19:29:43
【问题描述】:

示例:假设当前页面 url(window.location.href) 为http://example.com/page.html html页面源码是...

<html><head></head><body>
<script src="http://example.com/script.js?user=Ankit&ptid=18"></script>
</body></html>

现在我需要在 script.js 中使用“src”变量 脚本文件 script.js 应该返回

var a="Ankit"
var b="18"

我们可以在 php 中使用类似 echo $_GET 的东西吗?

【问题讨论】:

标签: php javascript url variables get


【解决方案1】:

我知道这是一个旧帖子,但是当我在寻找类似的东西时,我偶然发现了它。我最终采用的非常简单的解决方案如下:

<html><head></head><body>
<script>
 var a = "Ankit";
 var b = 18;
</script>
<script src="http://example.com/script.js?user=Ankit&ptid=18"></script>
</body></html>

如果你绝对想让你的生活复杂化并使用 Lahmizzar 的解决方案,我建议为你的标签脚本提供一个 id,这样可以避免贪婪函数。

HTML:

<script src="http://example.com/script.js?user=Ankit&ptid=18" id="myScript"></script>

JS:

 function getParams(script_id) {
  var script = document.getElementById(script_id);
  
    if(script) {
      // Get an array of key=value strings of params
      var pa = script.src.split("?").pop().split("&");

      // Split each key=value into array, the construct js object
      var p = {};
      for(var j=0; j<pa.length; j++) {
        var kv = pa[j].split("=");
        p[kv[0]] = kv[1];
      }
      return p;
  }

  // No scripts match
  return {};
}
getParams("myScript");

【讨论】:

    【解决方案2】:

    可能已经过时,但是一段不错的代码,并且可以完全按照 OP 中的要求进行操作

    // Extract "GET" parameters from a JS include querystring
    function getParams(script_name) {
      // Find all script tags
      var scripts = document.getElementsByTagName("script");
    
      // Look through them trying to find ourselves
      for(var i=0; i<scripts.length; i++) {
        if(scripts[i].src.indexOf("/" + script_name) > -1) {
          // Get an array of key=value strings of params
          var pa = scripts[i].src.split("?").pop().split("&");
    
          // Split each key=value into array, the construct js object
          var p = {};
          for(var j=0; j<pa.length; j++) {
            var kv = pa[j].split("=");
            p[kv[0]] = kv[1];
          }
          return p;
        }
      }
    
      // No scripts match
      return {};
    }
    

    Source: James Smith - Extract GET Params from a JavaScript Script Tag

    【讨论】:

      【解决方案3】:

      找到这个here。如果您使用的是 jQuery,这应该会有所帮助。

      function getURLParameter(name) {
          return decodeURI(
              (RegExp(name + '=' + '(.+?)(&|$)').exec(location.search)||[,null])[1]
          );
      }
      

      这是一个 javascript 函数,它将返回您传递给它的参数的 url 中的值。在这种情况下,您可以使用

      var a = getURLParameter("user");
      var b = getURLParameter("ptid");
      

      编辑:我将您问题的原始版本误解为询问获取正在加载的 .html 页面的参数。我刚刚测试了这个解决方案,它在 .js 文件本身中不起作用。但是,如果您在 .js 文件中声明变量,并将其放在 onLoad 事件中,从 ab 前面删除 var,它应该正确分配变量。

      【讨论】:

      • 我想从服务器端获取参数
      • 如果您的意思是,在 JavaScript 中,您想从服务器检索值,而不是从页面的 URL 检索值,那么您应该对 Ajax 请求进行一些研究。如果 jQuery 可用于该项目,它将让您的生活非常 更轻松。如果您在尝试使其正常工作后有任何具体问题,请在 StackOverflow 上发布一个新问题,因为它与此主题不同,如果您需要我的帮助,请告诉我。
      猜你喜欢
      • 2017-03-24
      • 1970-01-01
      • 1970-01-01
      • 2018-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      相关资源
      最近更新 更多