在.js文件中调用URL参数

时间:2010-02-24 19:30:56

标签: javascript jquery parameters

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

例如:

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

感谢所有人的帮助!

8 个答案:

答案 0 :(得分:6)

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

<script type="text/javascript">
    var foo= "bar";
</script>
<script type="text/javascript" href="path/to/js.js"></script>
以这种方式,变量将为您的脚本做好准备。

另一个解决方案是使用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>\")";
?>

答案 1 :(得分:2)

你使用像php这样的东西

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

yourFile.php:  
// <?php echo($_GET["var"]); ?>

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

答案 2 :(得分:1)

以不同方式解决问题:

  1. 包含您的.js文件
  2. 使用参数(即您的ID值)调用.js文件中定义的函数

答案 3 :(得分:1)

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.
}

更简单的解决方案是在单独的script标记中声明一个全局变量(命名空间以避免冲突),然后直接在脚本中使用它。

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

答案 4 :(得分:0)

function getUrlVars()
{
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href
                     .indexOf('?') + 1).split('&');

    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }

    return vars;
}

来源:http://snipplr.com/view.php?codeview&id=799

答案 5 :(得分:0)

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

答案 6 :(得分:0)

如果您尝试从网址读取参数,我使用了:

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));
    }
}

答案 7 :(得分:0)

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>

Coverage.js

var getTypeIDByCategoryIdUrl = ""; $(function () {
      $('#SeletedParrentIDTypeCode').change(function () {
      alert(getTypeIDByCategoryIdUrl); }