2015-04-23 187 views
1

我想通過URL傳遞2個值到另一個頁面。我知道如何做到這一點,但我正在從選擇框的結果中選擇一個值。我抓取選定的值並將其存儲在變量中,然後嘗試在URL中發佈此變量。如何使用URL傳遞變量

選項1正在存儲選定的值。

<select name = 'ADDITIONALINFO' id = 'ADDITIONALINFO'> 
    <option value="1">Option 1</option> 
     <option value="2">Option 2</option> 
     <option value="3">Option 3</option> 
     <option value="4">Option 4</option> 
</select> 

<script> 
     var sel = document.getElementById("ADDITIONALINFO"); 

     sel.onchange = function() 
     { 
      var option1 = sel.options[sel.selectedIndex].text; 
      alert(option1); 
     }; 
     </script> 

     <?php 


     echo "<div class=\"add-button-quote\"><a href=\"/quotation/index.php?sku=" . $product->PR_SKU . "&OP_NAME=" . $option1 . "&OP_NAME2=" . $o->OP_NAME . "\">Get a Quotation</a></div>"; 

問題我有,當我點擊按鈕時,它也需要我的URL顯示$ sku但不是$ option1。

如果任何人都可以發現我出錯的地方,我會非常感謝您的建議。謝謝!

+1

爲什麼不使用一個窗體與方法得到? – Florian

+0

來自php的回聲聲明不適用於JavaScript。 – epascarello

+0

你可以使用'window.open()'或'location'來獲得這個。只需獲取選定的索引並使用JavaScript重定向到以上建議 –

回答

-1

$選項1是不是在PHP(它在JavaScript中的變量,對不對?)定義不能混淆JS和php以這種方式;)

+0

啊好吧,那麼我怎樣才能將JS值添加到URL? – jonlloyd

+0

一個解決方案是使用一個窗體來代替這一切,它會處理所有這些。如果你真的想用JS來做,你可以添加一個事件監聽器到被調用的鏈接上,當鏈接被點擊時,阻止默認行爲並使用window.location.href =「yourlinkwithoutoption1&OP_NAME =」+ sel.options [sel .selectedIndex]的.text; – Florian

0

給了DIV ID和更改JavaScript函數:

sel.onchange = function() 
{ 
    var option1 = sel.options[sel.selectedIndex].text; 
    document.getElementById("add-button-quote").innerHTML = "<a href='/quotation/index.php?sku=<?php echo $product->PR_SKU;?>&OP_NAME="+encodeURIComponent(option1)+"&OP_NAME2=<?php echo $o->OP_NAME;?>'>Get a Quotation</a>"; 
    alert(option1); 
}; 

或給錨定一個ID和相同的方式來操縱其href屬性。

-1

使用onclick而不是onchange,它應該做的伎倆...就像@Florian問,爲什麼不使用表單?

此外,你應該定義選項1之外的onclick /平變化範圍,並把它作爲一個javascript變量,沒有「$」,一旦它不是一個PHP變量,而頁面激活

+0

好的,我該怎麼做? :P – jonlloyd

1

PHP沒有運行,它只在頁面加載前運行。從那裏你必須依靠JavaScript。

如果$product->PR_SKU$o->OP_NAME由PHP設置,則不必更改該部分,但從url中刪除OP_NAME。獲得選項後,您可以通過javascript添加參數。

請注意,你可能要存儲的baseUrl別的地方,而不是寫像下面,你將有可能獲得參數的副本:

document.getElementById("your-link").href += "&OP_NAME=" + option1; 

不喜歡這個:

var baseUrl = <?php echo "/quotation/index.php?sku=" . $product->PR_SKU . "&OP_NAME2=" . $o->OP_NAME; ?> 

var sel = document.getElementById("ADDITIONALINFO"); 
sel.onchange = function() 
{ 
    var option1 = sel.options[sel.selectedIndex].text; 
    document.getElementById("your-link").href = baseUrl + "&OP_NAME=" + option1; 
}; 

您的div可能看起來像這樣(請注意刪除選項1和id='your-link'

<?php 
echo "<div class=\"add-button-quote\"><a id=\"your-link\" href=\"/quotation/index.php?sku=" . $product->PR_SKU . "&OP_NAME2=" . $o->OP_NAME . "\">Get a Quotation</a></div>"; 
?> 
+0

啊,謝謝。那麼我應該怎麼看你的意思是絕對地址還是最後一位呢?喜歡這個?

"/quotation/index.php"
jonlloyd

+0

我的不好。我不小心提到了div而不是鏈接。你需要在你的鏈接上使用id來引用它。將更新我的答案。 – Phil

+0

非常感謝您的幫助,但我無法讓它工作!該網址只顯示sku和OP_NAME2。不包括OP_NAME。 – jonlloyd

0

以下是帶有onchange事件的POST方法的窗體示例 - 直接選擇標籤。這應該工作*(還沒有測試過),如果它,它不會花你很多的時間適應這個GET而不是POST。

<form id="UNIQUEID" method="POST" action="#"> 
    <select id="ADDITIONALINFO" name="ADDITIONALINFO" onchange="document.forms['UNIQUEID'].submit();"> 
     <option value="1">Option 1</option> 
     <option value="2">Option 2</option> 
     <option value="3">Option 3</option> 
     <option value="4">Option 4</option> 
    </select> 
</form> 

一件事...混合PHP和HTML時

使用singlequotes - 儘可能不要忘了寫PHP結束標記.. > - 兼..這 - >&應該是& amp;當url查詢不是-text/plain-(javascript)而是-text/html-時,在href標籤內部。

例用PHP shortEcho:

<?=而不是<?php echo(我假設你的服務器被配置爲使用PHP的簡寫):

<?='<div class="add-button-quote"> <a href="/quotation/index.php?sku='.$product->PR_SKU.'&amp;OP_NAME='.$option1.'&amp;OP_NAME2='.$o->OP_NAME.'">Get a Quotation</a> </div>'; ?> 

但是,隨着人們已經在這裏指出,$選項1變量不會按照你想要的方式工作。

有額外的$option1=$_GET['ADDITIONALINFO'];$option1=$_POST['ADDITIONALINFO'];(無論您決定使用,取決於窗體方法)之間的某處和<div class="add-button-quote"> ..可能工作。 :)