我正在尝试通过URL将2个值传递到另一个页面。我知道怎么做但是我从选择框的结果中取一个值。我抓取所选值并将其存储在变量中,然后尝试在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。
如果有人能够发现我出错的地方,我会非常感谢你的建议。谢谢!
答案 0 :(得分:1)
当页面处于活动状态时,PHP不会运行,它只会在页面加载之前运行。从那里你必须依赖JavaScript。
如果PHP设置了$product->PR_SKU
和$o->OP_NAME
,您不必更改该部分,但会从网址中删除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可能如下所示(请注意删除option1和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>";
?>
答案 1 :(得分: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属性。
答案 2 :(得分:0)
这是一个使用POST方法的表单示例,其中javascript onchange事件-etched-直接选择标记。这应该可以*(虽然没有经过测试),如果确实如此,它不会花费你很多时间来适应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时使用单引号 - 只要有可能并且不要忘记编写php close标签.. ?&gt; - 另外......这个 - &gt;当url查询不是-text / plain-(javascript)而是-text / html-时,&amp; 在href标记内应为&amp; amp; amp; amp; amp; amp; amp; amp; amp; 。
php shortEcho示例:
<?=
而不是<?php echo
(我假设你的服务器配置为使用php短号):
<?='<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>'; ?>
如同人们已经在这里说过的那样,$ option1变量不能按照你想要的方式工作。
使用额外的$option1=$_GET['ADDITIONALINFO'];
或$option1=$_POST['ADDITIONALINFO'];
(取决于表单方法,取决于表单方法)介于两者之间,<div class="add-button-quote">
之前......可能有效。 :)
答案 3 :(得分:-1)
$ option1没有在PHP中定义(它是JavaScript中的变量,对吗?)你不能以这种方式混淆JS和php;)
答案 4 :(得分:-1)
使用onclick而不是onchange,它应该可以解决问题......就像@Florian问的那样,为什么不使用表单?
此外,您应该在onclick / onchange范围之外定义option1,并将其用作javascript变量,一旦它不是PHP变量,就不用&#39; $&#39;