簡體   English   中英

使用Javascript獲取URL參數

[英]Get URL parameters with Javascript

嗨,我的HTML中包含以下標簽:

<script type="text/javascript" src="http://XX/teste1.php?BLABLABLA"></script>

teste1.php內部是否有某些東西,使用JS檢索參數BLABLABLA? 如果我使用window.location.href,則可以獲取index.php位置(當然),但是我需要使用JS(而不是PHP)將參數發送到外部資源。

我想我明白你的追求。 看看下面的小提琴。

http://jsfiddle.net/gK58u/2/

您可以看到我正在手動加載jQuery,然后從腳本聲明中獲取src

===================

HTML為您的腳本聲明添加id

<script id="jquerysrc" src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js?key=test"></script>

使用Javascript

$(document).ready(function() {
    var scriptsource = "";
    scriptsource = $("#jquerysrc").attr("src");
    alert(scriptsource);
});

這將使您看到外部js文件來自的URL。 這更是正確方向上的一點。

您可以嘗試此操作,而無需使用jQuery。

var scripts = document.getElementsByTagName('script'),i,src;

for(i=0;i<scripts.length;i++){
   src = scripts[i].src;
   if (src && src.indexOf('?')>=0){
       console.log(src.substring(src.indexOf('?')+1));
   }   
}

似乎您不了解PHP和JS如何協同工作。 PHP生成HTML(也可能是JS和CSS)。 然后,當客戶端加載此html時,將執行JS。

要在PHP或JS中獲得它,可以使用正則表達式或將URL從?BLABLABLA修改為?key=BLABLABLA 在PHP中,“ BLABLABLA”將存儲在$ _GET ['key']中


編輯:

好吧,我誤解了你的問題。

從“ 如何從javascript檢索GET參數? ”:

-------------------------

window.location對象。 此代碼為您提供了沒有問號的GET。

window.location.search.replace( "?", "" );

-------------------------

從您的示例中,它將返回BLABLABLA

window.location DOC


編輯2:

在teste.php中生成Javascript時,應執行以下操作:

$str = "";
foreach ($_GET as $key => $value) {
    $str = $key;
}
echo "var getParam = ".$str.";";

如果您不知道給出什么,我看不出如何避免foreach。 您可能需要重新構建參數字符串(“?xxx = sss&ddd = zz ...”)

現在,您的JS變量getParam應該包含BLABLABLA

阿波羅

當前,JavaScript沒有用於此目的的任何內置函數。 您所說的BLABLABLA被稱為Query String 將其攻擊到URL即可創建動態網頁(根據情況更改內容)

第一種方法

是獲取整個URL,然后將URL替換為空字符串,依此類推,僅獲取最后一個元素。

第二種方法

另一個答案與功能(自定義功能,而不是內置功能)一起發布。 在其中將參數傳遞給方法,該方法為您獲取參數值。 這也很容易理解。

function getParameterByName(name) {
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
        results = regex.exec(location.search);
    return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}

要調用該函數,請使用getParameterByName('prodId') 在函數或變量中使用它就可以了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM