2013-01-16 96 views
-2

我在我的旧网站中使用表单子引擎。由于SEO目的,我将其更改为onClick()函数,以便它将转到干净的URL,但是当我使用此函数时,其他表单值无法在PHP中获得文件如何在不提交表单的情况下在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会重定向到妇女/ 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()"/> 
+0

怎么可能拿到价值得到它贴 – Afsar

+0

前一次表单提交的价值将get.Same方式后onclick我想要做 – Athi

+0

你是什么意思的“其他表单值没有得到在php文件”? – Pontios

回答

1

不过,你可以通过选择一个选择做类似的值:

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

然后使用函数参数的值,喜欢的东西。类似于您重定向页面的位置,这是一个GET请求而不是POST。

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

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

然后在PHP中调用了一些东西。

另一种更简单的方法是使用jQuery(或者如果您喜欢的话使用普通的JavaScript)来更改表单的动作,以便路径是您的“女式上衣 - $ 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没有任何帮助。至少从我的例子中可以看出。你可能有其他的理由去做,但答案仍然存在。

+0

Crowlers将Crowl的URL right.I需要更改URL – Athi

+0

我很抱歉,它重新提交到相同的页面 – Athi

+0

在行动中我传递null和没有行动我也试过 – Athi

0

您有onchange事件调用函数cityChanged又一个选择,你只发布功能searchitem。当你做窗口

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? 
} 
+0

不,我不问这个在我的表单中,用户可以选择城市和材料,当他们点击搜索按钮时,它会提交表单(这是旧的)。但我改变了这onClick按钮,我打电话的功能,我要去具体的网址 – Athi

+0

我不能在URL中添加材料,因为我需要干净的URL – Athi

0

试试这个

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)"> 

希望这对你的作品

+0

我得到的城市,但材料没有进入下一页 – Athi

+0

yepee,你有价值,不做一点工作,以排除这件事,或让我知道你在得到什么 – Afsar

相关问题