php - 表单提交取消了我的 URL 查询字符串中的参数

标签 php javascript forms url form-submit

我正在为客户构建一个网络应用程序,我现在正处于系统初稿几乎完成的阶段,但是我遇到了一个最终问题,这个问题让我无法解决问题舒适区。

页面功能通过跨三个变量的 GET 请求通过 SQL 查询过滤数据,这些变量 s、p 和 g 在表单提交时传递到 URL 以执行搜索。除了每当我尝试切换 slider 时,一切正常,我的 ?s 参数从 URL 中删除,导致查询中断(由于某种原因没有提交 s。)。关注页面can be seen here

获取变量和查询 -

$pType = $_GET['s'];

$pVal = $_GET['p'];
$gVal = $_GET['g'];


$sql = "SELECT * FROM pumps 
        WHERE pump_type='$pType'
        AND flow_psi <= '$pVal'
        AND flow_gpm <= '$gVal'
        AND high_psi <= '$pVal'
        AND high_gpm <= '$gVal'";

表格-

  <form id="pumpSlider" action="<?php echo $_SERVER['PHP_SELF']; ?>?s=<?php echo $pType ?>&p=<?php echo $pVal ?>&g=<?php echo $gVal ?>" method="get" align="center">
       <div class="btn-group" data-toggle="buttons-radio">
          <button type="submit" class="<?php if( $pType == 'intermittent' ){ echo 'active '; } ?>btn btn-primary waitingUiBut" id="but1" name="s" value="intermittent">INTERMITTENT</button>
          <button type="submit" class="<?php if( $pType == 'continuous' ){ echo 'active '; } ?>btn btn-primary waitingUiBut" id="but4" name="s" value="continuous">CONTINUOUS</button>  
       </div>


      <div align="center" class="productSlider">
           <p class="inlineLabel">PSI</p><div class="filterSlider" id="psiSlider"></div>
           <p class="inlineLabel">GPM</p><div class="filterSlider" id="gpmSlider"></div>

           <input id="pS" type="hidden" name="p" value="<?php echo $pVal ?>" />
           <input id="gS" type="hidden" name="g" value="<?php echo $gVal ?>" />
      </div>
 </form>

最后,我使用了一些基本的 javascript 来处理 slider 值更改时表单的提交事件。

    $(document).ready(function() {
    $("#psiSlider" ).slider({
              // options
              start: function (event, ui) {
                  // code

                },
                slide: function( event, ui ) {
                  var curValue = ui.value || initialValueA;
                  var target = ui.handle || $('.ui-slider-handle');                                     
                  var tooltip = '<div class="tooltip"><div class="tooltip-inner">' + curValue + '</div><div class="tooltip-arrow"></div></div>';
                  $(target).html(tooltip);


                  var valA = $('#psiSlider').slider("value");
                  document.getElementById('pS').value = valA;   
                  var valB = $('#gpmSlider').slider("value");
                  document.getElementById('gS').value = valB;                   

                },
                change: function(event, ui) {
                  var val = $('#pS').slider("value");
                  var val = $('#gS').slider("value");
                  $('#pumpSlider').submit();
                }
           });
        });

我完全没有想法,如果有人有任何意见,我将不胜感激,谢谢。

最佳答案

您的表单隐藏了与 action URL 中的参数同名的输入。由于表单使用 method="get",输入值附加到 URL,因此 URL 具有多个同名参数。 PHP 使用最后一个,它是来自表单的值,而不是 URL。

如果您希望能够区分表单字段和 URL 参数,要么给它们不同的名称,要么使用 method="post"。在后一种情况下,您可以使用 $_GET 检索 URL 参数,使用 $_POST 检索表单输入。

关于php - 表单提交取消了我的 URL 查询字符串中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18264058/

相关文章:

Jquery form.Submit() 无法使用另一个表单的提交按钮

php - 将最近的列条目连接到 MySQL 查询结果

php - 用条件更新多列

javascript - 禁用表单提交可防止发送按钮属性

javascript - 添加列,然后按类别分隔数据

javascript - 上传到服务器时出现 404 错误 codeigniter

security - 表单 POST 到它自己的文件还是另一个文件,在安全性上有什么不同吗?

php - 使用可变段构建 Codeigniter URL

php - Wordpress 正在页内导入我的链接样式表

javascript - 如何使用 javascript 调用 UserControl 中的函数(代码隐藏)