【问题标题】:Javascript file for multiple html pages用于多个 html 页面的 Javascript 文件
【发布时间】:2016-09-19 10:13:27
【问题描述】:

我是 Javascript 的初学者。我目前正在使用它开发一个 Phonegap 应用程序。我被困在两者之间,因为我有 4 个用于注册过程的 html 页面,并且我必须将所有 html 页面输入值传递给单个 js 文件,因为最终所有数据都必须发布到服务器 URL,而且我已经在许多网站上阅读过他们建议对您网站的所有页面使用相同的 js 文件以加快网站速度。所以我有两个问题要解决。我搜索了许多网站,但找不到准确的答案。

  1. 我需要将 4 个 html 页面的输入值传递给单个 js 文件。

  2. 我必须为登录和注册制作单个 js 文件。

我的JS页面代码是:

var firstName="";
var lastName="";
var email="";
var password="";
var retypePassword="";
var gender="";
var DOB="";
var institute="";
var course="";
var branch="";
var semester="";
var teachers = [];

function signUpStarting() {
    alert(firstName + " "+lastName+" "+email+" "+password+" "+retypePassword+" "+gender+" "+DOB+" "+institute+" "+course+" "+branch+" "+semester+" "+teachers.join(","));

}   

function signUp1() {
    firstName[0] = $("#first_name").val().trim();
    firstName[1] = $("#last_name").val().trim();
    email = $("#email").val().trim();
    password = $("#password").val();
    retypePassword = $("#retype_password").val();   
    alert(firstName + " "+lastName+" "+email+" "+password+" "+retypePassword);
}

function signUp2() {
    gender = $('#gender').find(":selected").text();
    DOB = $('#DOB').val();
    alert(gender+" "+DOB);
}

function signUp3() {
    institute = $('#institute').find(":selected").text();
    course = $('#course').find(":selected").text();
    branch = $('#branch').find(":selected").text();
    semester = $('#semester').find(":selected").text();
    alert(institute+" "+course+" "+branch+" "+semester);
}

function signUp4() {
    $(":checkbox" ).map(function() {
            if($(this).is(':checked')){
                    teachers.push($('label[for="' + this.id + '"]').text());
            }
    });
    signUpStarting();
}

在 html 页面中,我为每个页面调用 JS 函数:

在第一页:

<a onclick="signUp1()" href="register-two.html">continue</a>

在第二页:

<a onclick="signUp2()" href="register-three.html">continue</a>

在第三页:

<a onclick="signUp3()" href="register-four.html">continue</a>

在第四页:

<a onclick="signUp4()">continue</a>

在从一页到下一页的每笔交易中,我都在 JS 中设置了警报,并且我也收到了准确值的警报。但是在点击html第四页的继续按钮后,我将代码转移到主注册功能。我试图在 signUpStarting() 函数中看到警报,但我只得到了第四页值的响应,而其他值没有显示任何内容,因为变量为空。

我不知道如何在不使用 localStorage 或 cookie 并将所有数据发布到服务器的情况下始终保存变量值。而且我认为如果我知道将我网站的所有 html 页面编码为单个 JS,这会更容易文件。

请帮帮我!

【问题讨论】:

  • 如果你在页面之间移动,我会做这个服务器端,否则我会加载使用 ajax 的下一步
  • ajax变量在转移到不同页面时不删除不改变?
  • 如果您使用 ajax,您实际上不会更改页面 - ajax 会加载新内容,而无需移出当前页面。阅读以下内容:stackoverflow.com/questions/1510011/how-does-ajax-work

标签: javascript jquery html cordova


【解决方案1】:

我不知道如何在不使用 localStorage 或 cookie 并将所有数据发布到服务器的情况下始终保存变量值。而且我认为如果我知道将我网站的所有 html 页面编码为单个 JS,这会更容易文件。

这完全正确。您不能在 Web 浏览器环境中的页面加载之间将数据存储在内存中,因为当浏览器从页面导航到新页面时,所有 javascript 变量都会自然地被销毁(即使它们在两个页面上使用相同的 javascript)。因此,您必须将其保存在更持久的地方:localStorage、cookie 或通过 POST 或 GET 保存在服务器上。

我的建议是废弃四个不同的 html 页面,只使用一个随着用户填写数据而动态变化的 html 页面。这样,在您准备好将数据发布到服务器之前,浏览器不会删除数据。

【讨论】:

  • 是的!将 html 文件合并到同一个文件中会很好,但问题是,我不能对所有 html 页面使用简单的 js 文件吗?如果是,那怎么办?
  • 我不确定您的意思,但在不同的 html 页面之间共享状态的唯一方法是将值存储在比页面寿命更长的存储中:cookie、会话数据或服务器上。对于在每个 HTML 页面上使用相同的 JS 文件,这还不是您正在做的事情吗? &lt;script type='text/javascript' src="link_to_js_file"&gt;&lt;/script&gt; 之类的东西?
  • 我的意思是“我如何为多个页面使用相同的 js 文件”是我想对不同的文件使用不同的函数,并且在这个文件中(对于 4 个 html 页面)我遇到了冲突,所以我想那里可能是其他方式,即使在一次又一次调用同一个文件后变量也不会改变。那就是问题所在。有什么专业的方法可以做到吗?像 $(document).ready(function()) using 或其他一些函数??或者我可以使用 ajax 变量来做到这一点?因为我不想一次又一次地向服务器发布数据。
  • Ajax 将查询服务器以存储其数据。将其存储在 cookie 或 sessionStorage 中会将其保存在用户的浏览器中,因此如果您坚持保留单独的 HTML 页面并希望避免过多地访问服务器,那么我建议您使用该路线。没有其他方法可以在 HTML 页面之间保持数据活动,因为浏览器的设计目的是在您每次导航到另一个 HTML 文档时将其全部丢弃。例外情况是 iframe,但这与合并 html 文件非常相似。
  • 非常感谢!我使用 localStorage 保存所有数据,并从最后一页开始将所有数据发送到服务器。这不会产生任何冲突,对吧?我的意思是这可以用于处理一个大项目?在应用程序运行之前数据不会丢失?或与它有任何其他冲突? @user2005218
猜你喜欢
  • 1970-01-01
  • 2016-01-03
  • 2011-11-17
  • 1970-01-01
  • 2012-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多