2010-09-21 41 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 */ 
})();