Javascript 在.js文件中调用URL参数

Javascript 在.js文件中调用URL参数,javascript,jquery,parameters,Javascript,Jquery,Parameters,我正在调用HTML文件中的.js文件。在.js文件的URL上,我想包含一个参数,该参数可供.js文件中的代码访问 例如: 我希望能够在jquery的帮助下,将ID值传递给jquery_widget.js文件中的函数。这是怎么做到的 感谢所有的帮助 您可以使用类似php的东西 your html file: <script type="text/javascript" src="yourFile.php?var=123"> yourFile.php: // <?php

我正在调用HTML文件中的.js文件。在.js文件的URL上,我想包含一个参数,该参数可供.js文件中的代码访问

例如:

我希望能够在jquery的帮助下,将ID值传递给jquery_widget.js文件中的函数。这是怎么做到的


感谢所有的帮助

您可以使用类似php的东西

your html file:
<script type="text/javascript" src="yourFile.php?var=123">  

yourFile.php:  
// <?php echo($_GET["var"]); ?>
您的html文件:
yourFile.php:
// 

或者,您可以定义一个全局变量,并让javascript访问该变量。

您不能这样做:您必须在加载脚本之前声明该变量。 例如:


var foo=“bar”;
这样,变量就可以用于脚本了

另一个解决方案是使用php脚本,然后可以使用GET变量。 在这种情况下,请确保通过header()调用告知您正在输出javascript

<script type="text/javascript" src="ip.php"></script>

和ip.php

<?
//"ip.php" example- display user IP address on any page
Header("content-type: application/x-javascript");
$serverIP=$_SERVER['REMOTE_ADDR'];
echo "document.write(\"Your IP address is: <b>" . $serverIP . "</b>\")";
?>

以不同的方式处理问题:

  • 包括你的.js文件
  • 使用参数调用.js文件中定义的函数(即ID值)
  • 函数getUrlVars() { var vars=[],散列; var hashes=window.location.href.slice(window.location.href .indexOf(“?”)+1.split(“&”); for(var i=0;i
    来源:

    HTML和javascript文件是静态资源,只能由客户端浏览器解释,因此您不能将任何查询参数传递给这些值并在内部读取它们,您可以做的是在服务器端使用参数动态生成javascript文件,然后将其作为页面的一部分。或者其他简单的方法是将js文件编写为php或jsp文件,并将页面的内容类型设置为
    text/javascript
    ,您可以访问其中的所有参数如果您试图从url读取参数,我使用了:

    function PageQuery(q) {
        if (q.length > 1) this.q = q.substring(1, q.length);
        else this.q = null;
        this.keyValuePairs = new Array();
        if (q) {
            for (var i = 0; i < this.q.split("&").length; i++) {
                this.keyValuePairs[i] = this.q.split("&")[i];
            }
        }
        this.getKeyValuePairs =  function() { return this.keyValuePairs; }
        this.getValue = function(s) {
            for (var j = 0; j < this.keyValuePairs.length; j++) {
                if (this.keyValuePairs[j].split("=")[0] == s)
                    return this.keyValuePairs[j].split("=")[1];
            }
            return false;
        }
        this.getParameters = function() {
            var a = new Array(this.getLength());
            for (var j = 0; j < this.keyValuePairs.length; j++) {
                a[j] = this.keyValuePairs[j].split("=")[0];
            }
            return a;
        }
        this.getLength = function() { return this.keyValuePairs.length; }
    }
    function queryString(key) {
        var page = new PageQuery(window.location.search);
        return unescape(page.getValue(key));
    }
    function displayItem(key) {
        if (queryString(key) == 'false') {
            document.write("you didn't enter a ?name=value querystring item.");
        } else {
            document.write(queryString(key));
        }
    }
    
    函数页面查询(q){
    如果(q.length>1)此.q=q.substring(1,q.length);
    否则。q=null;
    this.keyValuePairs=新数组();
    if(q){
    对于(var i=0;i
    javascript文件本身并不知道加载它的URL

    您可以做的是为HTML页面中包含的
    script
    标记分配一个ID,然后通过jQuery获取SRC属性。通过解析URL值,可以提取参数

    <script id='widgetJs' src='...'></script>
    
    var url = $("#widgetJs").attr("src");
    var q = url.split("?")[1];
    if (q) {
        var params = q.split("&");
        etc. etc... 
        i'm not even going to explain further because there are better solutions.
    }
    
    
    var url=$(“#widgetJs”).attr(“src”);
    var q=url.split(“?”[1];
    if(q){
    var参数=q.split(&);
    等等等等。。。
    我甚至不打算进一步解释,因为有更好的解决方案。
    }
    
    一个更简单的解决方案是在一个单独的
    脚本
    标记中声明一个全局变量(命名它以避免冲突),然后直接在脚本中使用它


    或者更好的是,在脚本中有一个从HTML文件调用的
    初始化(param)
    函数(这样可以避免不必要的变量污染全局上下文)

    cshtml文件

    <script src="@Url.Content("~/_scripts/CustomScripts/Coverage.js")" type="text/javascript"></script>   
    @using (Html.BeginForm("Create", "Coverage")) {
    
    }    
    <script type="text/javascript">    getTypeIDByCategoryIdUrl = '@Url.Action("GetTypeIDByCategoryId")';  </script>
    

    那是行不通的。。他正在请求
    .js
    包含的url参数。。而不是html页面。。
    <script id='widgetJs' src='...'></script>
    
    var url = $("#widgetJs").attr("src");
    var q = url.split("?")[1];
    if (q) {
        var params = q.split("&");
        etc. etc... 
        i'm not even going to explain further because there are better solutions.
    }
    
    <script src="@Url.Content("~/_scripts/CustomScripts/Coverage.js")" type="text/javascript"></script>   
    @using (Html.BeginForm("Create", "Coverage")) {
    
    }    
    <script type="text/javascript">    getTypeIDByCategoryIdUrl = '@Url.Action("GetTypeIDByCategoryId")';  </script>
    
    var getTypeIDByCategoryIdUrl = ""; $(function () {
          $('#SeletedParrentIDTypeCode').change(function () {
          alert(getTypeIDByCategoryIdUrl); }