2013-01-16 99 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

相關問題