Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用URL传递变量_Javascript_Php_Html - Fatal编程技术网

Javascript 如何使用URL传递变量

Javascript 如何使用URL传递变量,javascript,php,html,Javascript,Php,Html,我试图通过URL将2个值传递到另一个页面。我知道如何做到这一点,但我从选择框的结果中获取一个值。我获取所选的值并将其存储在变量中,然后尝试将该变量发布到URL中 选项1存储选定的值 <select name = 'ADDITIONALINFO' id = 'ADDITIONALINFO'> <option value="1">Option 1</option> <option value="2">Option 2</opt

我试图通过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


如果有人能指出我哪里出了问题,我将非常感谢你的建议。谢谢

$option1没有在PHP中定义,它是JavaScript中的一个变量,对吗?你不能以那种方式混淆JS和php

给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属性。

使用onclick而不是onchange,它应该可以做到这一点……就像@Florian询问,为什么不使用表单


此外,您应该在onclick/onchange范围之外定义option1,并将其用作javascript变量,不带“$”,一旦它不是PHP变量,则在页面处于活动状态时不会运行PHP,它只会在页面加载之前运行。从那时起,您必须依赖javascript

如果PHP设置了$product->PR_SKU和$o->OP_名称,则不必更改该部分,只需从url中删除OP_名称。选择选项后,可以通过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;
};

下面是一个表单示例,该表单使用POST方法,javascript onchange事件-蚀刻-直接选择标记。这应该行得通,不过还没有测试过,如果测试成功,你就不用花太多时间来调整它,让它变成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关闭标记..?>-而且这->应该是&;当url查询不是-text/plain-javascript而是-text/html-时,在href标记内

php shortEcho示例:


为什么不使用带有get方法的表单呢?php中的echo语句不适用于JavaScript。您可以使用window.open或location来获取此信息。只需获取所选索引并使用javascript将其重定向到上面的任何一个建议Option1不是PHP变量。它的JS变量。啊,好吧,那么我如何才能将JS值添加到URL?一个解决方案是使用一个表单,而不是全部,它将处理所有这些。如果你真的想用JS做这件事,你可以在你的链接中添加一个事件监听器,当点击链接时,阻止默认行为,并使用window.location.href=yourlinkwithoutoption1&OP_NAME=+sel.options[sel.selectedIndex].text;好的,我该怎么做谢谢你。那么我的div应该是什么样子的呢?你是指绝对地址还是最后一点?像这样/QUOTE/index.php是我的错。我无意中引用了div而不是链接。你需要在你的链接上有一个id来用javascript引用它。将更新我的答案。非常感谢你的帮助,但我就是无法让它工作!URL只显示sku和OP_名称2。未包括OP_名称。我发现这里有语法错误…href=baseUrl=&OP_名称,应该是…href=baseUrl+&OP_名称。我不得不问,你为什么要用javascript来做这件事?正如其他人所说,在HTML中使用默认表单可以包含变量。我也尝试过使用表单。但是,当我点击按钮进入索引页面时,它不会向url添加变量。你有做这件事的基本代码吗。我试过6种不同的方法,但都不管用。我将使用4个下拉框,而不仅仅是最后一个。
<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>   
<?='<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>'; ?>