我有以下代码,默认情况下会将参数的值添加到我的表单中。这很好但如果你将表单设置为post,则它不再有效。设置此值的最佳方法是什么?
var request = {};
var pairs = location.search.substring(1).split('&');
for (var i = 0; i < pairs.length; i++) {
var pair = pairs[i].split('=');
request[pair[0]] = pair[1];
}
var getfirstname = document.getElementById('firstname');
var firstname = request['firstname'];
getfirstname.setAttribute('value', firstname);
<form method="get" action="search">
<input type="text" name="firstname" id="firstname" />
<input type="submit" alt="Go" value="Go" border="0" />
</form>
www.example.com?firstname=john
<form method="get" action="search">
<input type="text" name="firstname" id="firstname" value="John" />
<input type="submit" alt="Go" value="Go" border="0" />
</form>
答案 0 :(得分:2)
您到目前为止所获得的答案可能无法正确解决您的问题。如果要从使用方法设置为“GET”提交的表单设置输入的值,则参数在查询字符串中可用并且可由浏览器访问 - 这就是为什么这样做的原因:
var pairs = location.search.substring(1).split('&');
但是当您将方法更改为“POST”时,浏览器(客户端)将无法再使用发布的数据。您需要在服务器端检索发布的数据。如果你使用PHP,你会做这样的事情(非常非常简化的版本):
<?php
$firstname = (isset($_POST['firstname'])) ? $_POST['firstname']:'NA';
?>
<form method="get" action="search">
<input type="text" name="firstname" id="firstname" value="<?php echo $firstname; ?>" />
<input type="submit" alt="Go" value="Go" border="0" />
</form>
希望有所帮助。如果你能解释一下你想要做什么,我可以通过jQuery选项添加一些东西来解决ajax。
答案 1 :(得分:1)
如果要设置字段的值,请设置value属性而不是value属性
getfirstname.value = firstname;
答案 2 :(得分:1)
设置实际的值,而不是设置value
属性:
getfirstname.val(firstname);