【问题标题】:how to get form values in php without submitting a form?如何在不提交表单的情况下在 php 中获取表单值?
【发布时间】:2013-01-16 05:38:29
【问题描述】:

我在我的旧站点中使用表单提交。由于 SEO 的目的,我将其更改为 onClick() 函数,这样它会转到一个干净的 URL,但是当我使用此函数时,其他表单值不会进入php文件

下面是我的旧代码

 <form name="frmSearchTops" id="frmSearchTops" action="/womens/tops/" method="post">
        <select  name="cboCityNameRes" id="cboCityNameRes">
          <option value=''>City</option>
             {foreach from= $arritemCities item=foo}                      
               {if $smarty.post.hdnCityName eq $foo}                                
                  <option value="{$foo}" selected="selected">{$foo}</option>          
               {else}    
                <option value="{$foo}" {if $foo eq 'City'} selected="selected"{/if}>
                     {$foo}
                </option>
               {/if}    
             {/foreach}    
        </select>
    <select name="cboMaterial" id="cboMaterial">
      <option value="">Material</option>
      <option value="CT">Cotton</option>
      <option value="SL">Silk</option>
    </select>
     <input name="btnSearch" type="button" value="Search" id="btnSearch"/>       
 </form>

新代码如下 在这里,我在控制器操作中提供了一个虚拟 URL,它将重定向到 womens/tops.php 文件,但我没有得到所选类型的材料

JavaScript

 <script type="text/javascript">

          function searchitem()
          {
        $strCity    =   document.getElementById('cboCityNameRes').value;
        window.location.href = "http://www.legacy.com/womens-tops-"+$strCity+".php";
          }
    </script>   

HTML 代码

 <select  name="cboCityNameRes" id="cboCityNameRes" onchange="cityChanged()">
      <option value=''>City</option>                  
       {foreach from= $arritemCities item=foo}                        
          {if $smarty.post.hdnCityName eq $foo}                                 
             <option value="{$foo}" selected="selected">{$foo} </option>                      
          {else}    
             <option value="{$foo}" {if $foo eq 'City'} selected="selected"{/if}>
                 {$foo} 
            </option> 
          {/if} 
        {/foreach}    
    </select>                        
   <select name="cboMaterial" id="cboMaterial">
     <option value="">Material</option>
     <option value="CT">Cotton</option>
     <option value="SL">Silk</option>
   </select>                    
    <input name="btnSearch" type="button" value="Search" id="btnSearch" onclick="searchitem()"/>

【问题讨论】:

  • 如何在发布之前获取值
  • 一旦表单提交,值就会得到。在点击后我想做同样的方式
  • “其他表单值没有进入 php 文件”是什么意思?

标签: php javascript html seo


【解决方案1】:

当您像这样执行 window.location 时,您正在重定向页面,这是一个 GET 请求而不是一个 POST。

您需要将额外的变量添加到查询字符串中,例如

window.location.href = "http://www.legacy.com/womens-tops-" + strCity +".php?something=blah";

然后在调用的 PHP 中就会出现一些问题。

另一种更简单的方法是使用 jQuery(如果您愿意,也可以使用纯 JavaScript)来更改表单的操作,以便路径是您的“womens-tops-$strCity”,然后提交表单。

var strCity = document.getElementById('cboCityNameRes').value;
var frm = document.getElementById('frmSearchTops')
frm.action = "/womens-tops-" + strCity + ".php";
frm.submit();

或者 jQuery

var strCity = $('#cboCityNameRes').val();
$("#frmSearchTops").attr("action", "/womens-tops-" + strCity + ".php");
$("#frmSearchTops").submit();

虽然搜索引擎机器人根本不会运行任何 JavaScript。因此,这并没有真正为您做任何 SEO。至少从你的例子中我可以看出。不过,您可能还有其他理由这样做,所以答案仍然有效。

【讨论】:

  • 很抱歉它重新提交到同一页面
  • 在行动中我传递 null 并且我也尝试过没有行动
  • 如果您将操作设置为空,它将发布到同一页面...您必须将操作设置为您想要访问的 URL。就像我在回答中展示的那样。
  • 在您的回答中,您得到了 javascript 操作,我在询问表单标签操作
  • 抱歉回复晚了。我的网络突然断线了
【解决方案2】:

您有一个使用 onchange 事件调用函数 cityChanged 的选择,但您只发布了函数 searchitem

不过,您可以传递为 select 选择的值,执行以下操作:

<select  name="cboCityNameRes" id="cboCityNameRes" onchange="cityChanged(this.value)">
...
</select>

然后使用函数参数的值,例如:

function cityChanged(city){
    var material = document.getElementById("cboMaterial").options[document.getElementById("cboMaterial").selectedIndex].value;
    // window.location.href = "http://www.legacy.com/womens-tops-"+city+".php"
    // add material to the URL somewhere?
}

【讨论】:

  • 不,我不是在问这个在我的表单中,用户可以选择城市和材料,当他们点击搜索按钮时,它将提交表单。(这是旧的)。但是我将其更改为我正在调用函数的按钮的 onClick,因为我将转到特定的 url
  • 我无法在 URL 中添加材料,因为我需要干净的 URL
【解决方案3】:

试试这个

function cityChanged(val) {
var value = val.options[val.selectedIndex].value;  
window.location.href = "http://www.legacy.com/womens-tops-"+value+".php";
}

你的 HTML 应该是这样的,

<select  name="cboCityNameRes" id="cboCityNameRes" onchange="cityChanged(this)">

希望这对你有用

【讨论】:

  • 我正在进入城市,但材料没有进入下一页
  • 是的,你得到了价值,不要做一点工作来解决这个问题,或者让我知道你得到了什么
猜你喜欢
  • 1970-01-01
  • 2016-12-05
  • 1970-01-01
  • 2010-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-19
相关资源
最近更新 更多