将数据从URL发布到JavaScript中

时间:2010-09-21 06:55:22

标签: javascript

我的服务器上有一个javascript,我需要在调用URL时设置一个值/在javascript中调用一个函数。无论如何都这样做?


更新

<script type="application/x-javascript" src="test-test.js"></script>

这是如何在HTML网站上加载的。我想在test-test.js中调用函数test(e,e),在浏览器中输入带有e,e值的值的URL。

3 个答案:

答案 0 :(得分:2)

除非您使用少数使用服务器端JavaScript的Web服务器之一,否则您的脚本将在加载页面后在浏览器中运行。如果要在脚本中包含URL中的信息(并假设您可以使用查询字符串而不更改服务器的行为),则可以使用window.location.search从问号开始获取所有内容。

此函数将返回整个查询字符串(不带问号)或以分号分隔的值列表与您提供的名称值匹配:

function getUrlQueryString(param) {
   var outObj = {};
   var qs = window.location.search;
   if (qs != "") {
      qs = decodeURIComponent(qs.replace(/\?/, ""));
      var paramsArray = qs.split("&");
      var length = paramsArray.length;
      for (var i=0; i<length; ++i) {
         var nameValArray = paramsArray[i].split("=");
         nameValArray[0] = nameValArray[0].toLowerCase();
         if (outObj[nameValArray[0]]) {
            outObj[nameValArray[0]] = outObj[nameValArray[0]] + ";" + nameValArray[1];
            }
         else {
            if (nameValArray.length > 1) {
               outObj[nameValArray[0]] = nameValArray[1];
               }
            else {
               outObj[nameValArray[0]] = true;
               }
            }
         }
      }
   var retVal = param ? outObj[param.toLowerCase()] : qs;
   return retVal ? retVal : ""
   }

因此,如果网址是:

http://www.yoursite.com/somepage.html?name=John%20Doe&occupation=layabout

如果你致电getUrlQueryString(),你会回来name=John Doe&occupation=layabout。如果您致电getUrlQueryString("name"),则会返回John Doe

(是的,我喜欢横幅式的缩进。所以起诉我。)

答案 1 :(得分:1)

您可以使用address plugin通过#符号在网址中传递某些条件:http://my_site/my_page#your_condition

在HTML中你可以写这样的东西:

<script>
$(function(){
// Init and change handlers
    $.address.init().change(function(event) {
            if (event.value == "your_condition")
                 run_my_finction();
    });
    )};
<script>

请参阅this exaple以获取进一步的帮助。

答案 2 :(得分:0)

如果您想从浏览器的地址栏执行JavaScript,您可以使用自动调用功能:

javascript:(function () {
  alert('Hello World');
  /* Call the JavaScript functions you require */
})();