2015-04-23 2 views
1

Я пытаюсь передать 2 значения по URL-адресу на другую страницу. Я знаю, как это сделать, однако я беру одно из значений из результата окна выбора. Я хватаю выбранное значение и сохраняю его в переменной, а затем отправляю эту переменную в 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>"; 

Проблема Im имея когда я нажимаю на кнопку URL он берет меня тоже отображает $ SKU, но не $ option1.

Если кто-нибудь может заметить, где я пошла не так, я бы очень признателен за ваш совет. Благодаря!

+1

Почему бы не использовать форму с методом get? – Florian

+0

echo statement от php не собирается работать с JavaScript. – epascarello

+0

Вы можете использовать 'window.open()' или 'location', чтобы получить это. Просто выберите выбранный индекс и переадресуйте его с помощью javascript с любым из приведенных выше предложений. –

ответ

-1

$ option1 не определен в PHP (это переменная в JavaScript, верно?) Вы не можете перепутать JS и PHP таким образом;)

+0

Ahh okay, так как я могу добавить это значение JS в URL? – jonlloyd

+0

Одним из решений было бы использовать форму вместо всего этого, она будет обрабатывать все это. Если вы действительно хотите сделать это с помощью JS, вы можете добавить прослушиватель событий к своей ссылке, которая вызывается, когда нажимается ссылка, предотвратить поведение по умолчанию и использовать window.location.href = "yourlinkwithoutoption1 & OP_NAME =" + sel.options [sel .selectedIndex] .text; – Florian

0

Дайте Див идентификатор и изменить функцию яваскрипта для:

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/OnChange сферы, а также использовать его в качестве яваскрипта переменной, без «$», когда это не PHP переменная

+0

Хорошо, как мне это сделать? : P – jonlloyd

1

PHP не выполняется, пока страница активна, он запускается только до загрузки страницы. Оттуда вы должны полагаться на javascript.

Если $product->PR_SKU и $o->OP_NAME задано PHP, вам не нужно изменять эту часть, но удалите OP_NAME с URL-адреса. После выбора опции вы можете добавить параметр 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':

+0

Ahh спасибо. Итак, как должен выглядеть мой div, вы имеете в виду абсолютный адрес или только последний бит? Как это?

"/quotation/index.php"
jonlloyd

+0

Мой плохой. Я случайно ссылался на div вместо ссылки. Вам нужен идентификатор вашей ссылки, чтобы ссылаться на него с помощью javascript. Обновит мой ответ. – Phil

+0

Большое спасибо за вашу помощь, но я просто не могу заставить его работать! URL-адрес показывает только sku и OP_NAME2. OP_NAME не входит. – jonlloyd

0

Вот пример формы с методом POST с javascript onchange event -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> 

Еще одна вещь ...

USE singlequotes при смешивании PHP и HTML - везде, где это возможно, и не забывайте писать PHP закрывающий тег .. > - ТАКЖЕ .. это ->& должно быть & amp; внутри тега href при запросе url не -text/plain- (javascript), но -text/html-.

Пример с PHP shortEcho:

<?= вместо <?php echo (я предполагаю, что Ваш сервер настроен на использование PHP Shorthands):

<?='<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"> .. может работать. :)

Смежные вопросы