2015-04-23 191 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"> ..可能工作。 :)