在页面之间传递值。我究竟做错了什么?

时间:2011-07-28 13:20:02

标签: javascript jquery html ajax

我有2个页面,一个名为details.page,另一个名称为maps.page

在第一页中,我声明了一个搜索输入,如下所示:

  <form method="get" id="form-search" data-ajax="true" action="maps.page">
            <input type="search" name="search" id="search" value=""/>
        </form>

在我的第二页maps.page中,我有一个声明如下:

  <form action="maps.page">
        <input type="search" name="search" id="search-field" value=""/>
        </form>

现在,我假设当我在第一页的搜索栏中键入内容并按Enter键时,maps.page上的搜索栏将填充先前输入的值。

我被正确重定向,但搜索栏为空。

我做错了什么?

提前感谢您的帮助。

编辑:另外,我在网址中看到它似乎正常工作,因为我可以看到我在网址中搜索到的内容如下:/maps.page?search = something

3 个答案:

答案 0 :(得分:1)

该值不会自动填充。您需要从服务器端打印它。

  <form action="maps.page">
        <input type="search" name="search" id="search-field" value="<insert value>"/>
  </form>

答案 1 :(得分:1)

  

我假设当我在第一页的搜索栏中键入内容并按Enter键时,maps.page上的搜索栏将填充先前输入的值。

这就是你做错了。

只有设置了value属性(或在将元素添加到DOM后设置DOM值属性),才会填充该字段。

这通常使用服务器端进程完成。具体细节取决于您用于创建该过程的语言,但请注意XSS,因为包含未经过滤的非转义用户输入会产生安全漏洞。

答案 2 :(得分:1)

如果不使用后端脚本,您可以选择如何执行此操作。

1)您可以将表单方法设置为GET,以便变量在地址栏中传递,然后使用类似下面的脚本在另一侧获取它们(这实际上是读取地址然后为变量解析它) )。之后,您可以将该值放在输入字段中。

var getVars = new Array();
var locvartemp = ( window.location.href.indexOf( "?" ) + 1 ) ? window.location.href.substr( window.location.href.indexOf( "?" ) + 1 ) : "";
locvartemp = locvartemp.split( "&" );
for( var x = 0; x < locvartemp.length; x++ ) {
    var lvTempVar = locvartemp[x].split( "=" );
    getVars[ unescape( lvTempVar[0] ) ] = unescape( lvTempVar[1] );
}

2)您可以使用jQuery cookie插件在提交表单之前将值设置为cookie,然后在另一侧读取并将其设置为输入字段。

jQuery.cookie("myCookie", document.formName.myFieldName.value);

如果您需要更多详细信息,请与我们联系。