3

我有 2 个 html 文件,fillForm.html 和 AnswerForm.html,以及一个名为 scripts.js 的 javascript 文件填写完所有表格,然后将数据发送到第二页,屏幕上会显示:“你好“姓名”,您的年龄是“年龄”“我认为这是请求和响应的事情,但我想做它与 post 一起使用,而不是使用 get 从 url 中获取数据。我在 fillForm 页面中有这个:

<!DOCTYPE html>
<html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <script type="text/javascript" src="scripts.js"></script>
    <script src="http://ajax.microsoft.com/ajax/jQuery/jquery-1.8.2.js" 
         type="text/javascript"></script>

    </head>

    <body>
        <form name="myForm" action="AnswerForm.html" onsubmit="return validateForm()" method="post">
            First name: <input type="text" name="fname"><br/>
            Age: <input type="text" name="age">
            <input type="submit" value="Submit">
        </form>
    </body>

</html>

scripts.js 中的脚本是:

function validateForm()
{
    var firstName=document.forms["myForm"]["fname"].value;
    var Age=document.forms["myForm"]["age"].value;
    if ((firstName==null || firstName=="") || (Age==null || Age==""))
    {
          alert("fillOut  all the form");
          return false;
    }
    else
    {

    }
}

知道我只想获取数据并将其显示在 ANSWERFORM.html 上,在这里我需要帮助。另外我有一个问题:表格的检查是好的还是有更好的检查方法?因为如果我没有2个数据要检查,而是40个,这个检查会很长,而且检查不是具体的而是一般的)谢谢!

4

4 回答 4

3

您通常需要一个服务器端代码/进程来处理这样的数据。

但是如果你想留在javascript中,你可以使用localStorage来存储一些数据并在下一页中使用它。但localStorage不要在所有浏览器上工作,所以要小心。

于 2012-12-19T12:48:27.567 回答
0

在其他部分使用以下代码

document.forms["myForm"].action="AnswerForm.html?fanme="+firstName+"&age="+Age;
return true;
于 2012-12-19T12:56:53.837 回答
0

这样做的正常方法可能是将数据与请求一起发布到网络服务器,使用一些服务器端语言来处理它并在下一页上正确呈现数据,但可以使用 JavaScript 做类似的事情我猜。

这个想法是修改您的 HTML 表单以通过 HTTP GET 而不是 POST 发布数据。然后,在调用 AnswerForm.html 时,您的表单数据将被添加到查询字符串中。然后,在答案页面上,您可以使用类似于此SO 答案中描述的示例的内容阅读查询字符串,然后在加载时将内容注入您的答案页面,并进行一些简单的 DOM 操作。

注意:此解决方案将完全依赖 JavaScript 工作,否则用户将看不到答案页面上的任何数据。

更新:

使用上面引用的 SO 帖子中的示例,您可以这样做:

<html>
   <head>
        <title>Foo</title>
        <script>
        function getParameterByName(name)
        {
            name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
            var regexS = "[\\?&]" + name + "=([^&#]*)";
            var regex = new RegExp(regexS);
            var results = regex.exec(window.location.search);
            if(results == null)
                return "";
            else
                return decodeURIComponent(results[1].replace(/\+/g, " "));
        }
        </script>
   </head>
   <body> 
      Hello <span id="fname"></span>
      <script>
         var fname = getParameterByName("fname");
         document.getElementById("fname").innerText = fname;
      </script>
   </body> 
</html>

为了让您更轻松,您可以添加一个带有 ID 的跨度元素(以便通过 javascript 轻松选择),然后读取查询字符串的内容并将其添加到该跨度。

于 2012-12-19T12:50:28.003 回答
0

这不是最适合基于浏览器的纯 JavaScript 的工作。问题是基于浏览器的 JS 是特定于给定页面的。当该页面被处理(即当您提交数据时)时,该 JavaScript 将与包含它的页面一起消失。您可以通过会话或本地存储(使用localStorage.key = valueor sessionStorage.key = value)传递,但这是一种解决方法,即使在提交数据后,最终用户也可以对其进行编辑。

要正确实施您的解决方案,您需要在某些方面通过 Web 服务器,该服务器将管理请求,接受来自第一页的数据,保留它并将其传递到第二页。你如何做到这一点完全取决于你在网络服务器上使用的语言。如果你已经熟悉 JavaScript,nodejs 可能是一个不错的选择:http ://nodejs.org/

于 2012-12-19T12:50:41.487 回答