Javascript xmlhttp.responsetext无法正常工作
我想创建一个随机密码和QRcode密码。 我有一些用于设计的代码和一些用于函数的javascripts代码。当我单击“创建新密码”按钮时,我会在文本框中看到Html标记,而不是密码。如下所示:Javascript xmlhttp.responsetext无法正常工作,javascript,Javascript,我想创建一个随机密码和QRcode密码。 我有一些用于设计的代码和一些用于函数的javascripts代码。当我单击“创建新密码”按钮时,我会在文本框中看到Html标记,而不是密码。如下所示: <div align="left"> <label>Google Authenticator Setting</label> <form> <br> secret: <input type="text" id="mysecret" name
<div align="left">
<label>Google Authenticator Setting</label>
<form>
<br>
secret: <input type="text" id="mysecret" name="secret" value="" >
<br>
<input type="Button" class="elgg_button" value="Create new secret" width="610px" onclick = "newSecret()" >
<input type="Button" id="qrcodebtn" class="elgg_button" value="Show/Refresh qrcode" width="610px" onclick = "genQrCode()" >
</form>
<br>
</div>
<div id="qrcode" style="text-align: center;margin-left: auto;margin-right: auto;width:700px"></div>
<br>
<script type="text/javascript">
var qrcode = new QRCode(document.getElementById("qrcode"),
{
width : 200,
height : 200
});
var qrurl;
function stringGen(len)
{
var text = "";
var charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";
for( var i=0; i < len; i++ )
text += charset.charAt(Math.floor(Math.random() * charset.length));
return text;
}
function newSecret()
{
var xstr = "";
qrurl = "";
document.getElementById('mysecret').value = "";
window.XMLHttpRequest
{
xmlhttp = new XMLHttpRequest();
}
//xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
//alert(xmlhttp.responseText);
xstr=xmlhttp.responseText;
}
}
xmlhttp.open("POST","mod/test/views/default/test/coder.php",false);
xmlhttp.send();
if(xstr != "")
{
var res = xstr.split(";");
qrurl = res[1];
document.getElementById('mysecret').value = res[0];
}
else
{
alert("Empty Str!")
}
}
function genQrCode()
{
if (qrurl=="")
{
alert("Generate a text");
return;
}
qrcode.makeCode(qrurl);
}
</script>
谷歌认证设置
秘密:
var qrcode=新的qrcode(document.getElementById(“qrcode”),
{
宽度:200,
身高:200
});
var-qrul;
函数stringGen(len)
{
var text=“”;
var charset=“abcdefghijklmnopqrstuvxyz234567”;
对于(变量i=0;i
Ajax是异步的
这意味着:向服务器发送请求。回复需要一些时间。在等待响应时,将执行其余代码。
因此,您不能使用xstr,只需将它存在于(代码中较大的行号)xmlhttp.send()下即可
相反,Ajax的工作原理是:您给出一个回调,这个函数将在响应返回后执行。
此功能:
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
//alert(xmlhttp.responseText);
xstr = xmlhttp.responseText;
}
}
// notice: xstr is empty here
您应该只在这个函数中使用xstr。继续下去。大概是这样的:
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
xstr = xmlhttp.responseText;
if(xstr != "") {
var res = xstr.split(";");
qrurl = res[1];
document.getElementById('mysecret').value = res[0];
}
}
}
谢谢你的回答,这是正确的,并且在其他网站上工作过。我从你的回答中了解到我使用elgg函数来解决问题,因为我为elgg编写了一个插件。你能帮我吗?如果你知道elgg,请发送一个电子邮件地址。如果不知道,请向我介绍其他人可以帮助我了解elgg插件。非常感谢:)不,对不起,我不知道elgg。我知道elgg上有很多大型网站;所以我认为它是好的。无论如何永远不要忘记,标准规则仍然适用。