xmlhttprequest:来自txt文件的“密码”

时间:2010-02-10 13:06:20

标签: javascript ajax forms xmlhttprequest passwords

我是javascript / ajax的新手,现在有点卡住了。 该任务仅使用javascript / ajax。

我应该创建一个登录表单,当输入正确的密码时,它将显示“秘密消息”。目前此消息是一个警告框。

这是用于验证表单输入的脚本:

var riktigPassord = 'password';     
var passord = window.document.passordSkjema.passord.value;
     if (passord == riktigPassord ) {
      alert("Dette er en hemmelig beskjed");
      window.document.passordSkjema.passord.focus();
      return true;
     }
     else {
      alert("Innlogging mislyktes. Passord er feil!");
      window.document.passordSkjema.passord.focus();
      return false;
     }
    }//slutt på funksjonen her

这是表格的代码:

<form name="passordSkjema" action="#" method="post" 
onSubmit="return validerPassord();">
Passord: <input type="text" name="passord"><br>
<input type="submit" name="knapp">
</form>

我应该从txt文件中获取密码。 (仍然只使用javascript) 在我的例子中,txt-filename是“password.txt”。

我之前从未这样做过,但我想我知道如何制作一个XHR对象...... xD

// New XMLHttpRequest-object
function newXHRobjekt() {
 try {
  XHRobjekt = new XMLHttpRequest(); // Firefox, Opera, ...
 } catch(err1) {
  try {
   XHRobjekt = new ActiveXObject("Microsoft.XMLHTTP"); // Noen IE
  } catch(err2) {
   try {
    XHRobjekt = new ActiveXObject("Msxml2.XMLHTTP"); // Noen IE
   } catch(err3) {
    XHRobjekt = false;
   }
  }
 }
 return XHRobjekt;
}

所以......我的问题是。如何使用XHR对象来使用上述函数来检查password.txt的密码输入。该文件仅包含密码(例如仅包含“12345”)。而且我想知道如何从另一个txt文件中获取“秘密消息”。

我知道这根本不安全,但它是我的课程中理解javascript / Ajax的一部分。

谢谢!

2 个答案:

答案 0 :(得分:0)

将以下代码添加到正文的onload事件中。

var passwordLoaded = false;
var password = "";
var secretMessageLoaded = false;
var secretMessage = "";

var xhr = newXHRobjekt();
xhr.open("GET", "password.txt");
xhr.onreadystatechange = function() {
    if (xhr.readyState == 4) {
        password = xhr.responseText;
        passwordLoaded = true;
    }
}
xhr.send(null);

xhr = newXHRobjekt();
xhr.open("GET", "secret_message.txt");
xhr.onreadystatechange = function() {
    if (xhr.readyState == 4) {
        secretMessage = xhr.responseText;
        secretMessageLoaded = true;
    }
}
xhr.send(null);

如果passwordLoaded和secretMessageLoaded都设置为true,则可以使用变量password和secretMessage。

答案 1 :(得分:0)

与许多Javascript API一样,XHR对象也有异步接口。因此,您需要定义回调函数来处理响应:

xmlhttp.open("POST", "http://example.com",true);
xmlhttp.onreadystatechange=function() {
  if (xmlhttp.readyState==4) {
   alert(xmlhttp.responseText)
  }
}
xmlhttp.send('my request data');

在网上搜索示例。我找到了post, a bit old but seem to have good examples