2010-09-21 40 views
1

我的服务器上有一个JavaScript,我需要在调用URL时在JavaScript内设置值/调用函数。有没有这样做?从URL向JavaScript发布数据


UPDATE:

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

那它是如何其加载的HTML网站。我想在test-test.js中调用函数测试(e,e),将URL放在浏览器中,并使用e,e的某些值。

+4

请扩大一点。你打电话给网址是什么意思?你在使用AJAX吗? – nico 2010-09-21 06:57:02

+0

是你手动将URL放入浏览器(或点击链接)?如果你是,你需要把它放在查询字符串中(因为它是一个HTTP GET)。如果您发布到URL(HTTP POST),您可以阅读目标页面上的表单发布值并将它们注册到脚本中。 – RPM1984 2010-09-21 06:58:30

+2

你正在运行JavaScript _on_服务器,还是在客户端? – thomasmalt 2010-09-21 06:58:59

回答

1

除非您使用少数采用服务器端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 : "" 
    } 

因此,如果URL是,说:

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

如果你打电话getUrlQueryString()你还是会回到name=John Doe&occupation=layabout。如果您致电getUrlQueryString("name"),您会收到John Doe

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

+0

Thx ...非常有帮助:)我解决了这个问题 – Roskvist 2010-09-22 07:17:17

1

您可以使用address plugin以便能够通过在URL中一些状态低谷#符号:http://my_site/my_page#your_condition

在HTML中你可以写这样的:对于futher帮助

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

this exaple

0

如果你想从浏览器的地址栏中执行JavaScript,你可以使用自调用函数:

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