0

我有下面的代码,默认情况下将参数的值添加到我的表单中。这很好用,但如果您将表单设置为发布,则它不再有效。设置此值的最佳方法是什么?

    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>
4

3 回答 3

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。

于 2013-09-19T00:27:47.787 回答
1

而不是设置value属性,设置实际

getfirstname.val(firstname);
于 2013-09-19T00:11:44.503 回答
1

如果要设置字段的值,请设置 value 属性而不是 value 属性

getfirstname.value = firstname;
于 2013-09-19T00:07:59.453 回答