如何使用URL传递变量

时间:2015-04-23 13:07:09

标签: javascript php html

我正在尝试通过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。

如果有人能够发现我出错的地方,我会非常感谢你的建议。谢谢!

5 个答案:

答案 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.'&amp;OP_NAME='.$option1.'&amp;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;