我在我的旧网站中使用表单submition。因为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()"/>
答案 0 :(得分: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。至少从我的例子中可以看出。你可能有其他理由这样做,但答案仍然存在。
答案 1 :(得分:0)
你有一个选择onchange事件调用函数cityChanged
但你只发布了函数searchitem
。
尽管如此,您可以传递为选择选择的值:
<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?
}
答案 2 :(得分: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)">
希望这对你有用