xmlhttp.responsetext无法正常工作
xmlhttp.responsetext does not work correctly
我想从secret创建一个随机secret和QRcode。我有一些用于设计的代码和一些用于函数的javascript代码。当我单击Create new secret按钮时,我在文本框中看到的是Html标记,而不是secret代码。如下所示:
<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>
这意味着:您向服务器发送请求。回复需要一些时间。在等待响应时,将执行代码的其余部分。因此,您不能使用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];
}
}
}
相关文章:
- Javascript:selenium Web驱动程序isDisplayed()不工作
- jQuery UI自动完成突然停止工作
- AngularJS UI路由器不能像ng路由器那样工作
- HTML5音频加载和播放获胜'我不能在iPad上工作
- JavaScript打印功能使日历停止工作
- Javascript.getHours()工作不正常
- 为什么这在IE中的工作方式与在Firefox中不同
- 视频HTML没有'无法在Internet Explorer 11上工作
- 扩展移相器按钮类不工作
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- 正在尝试使用if和else添加类,但无法正常工作
- Jquery FadeIn FadeOut 只工作一次
- Foreach无法在Typescript中工作
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 为什么不是't窗口.恢复正常工作吗?(javascript/jquery)
- JS可以在Chrome中工作,但不能在Firefox中工作
- 最大高度转换不;不工作,工作缓慢
- Gulp-rev:不是第一次工作,而是在第一次工作之后工作
- JQuery - Ajax: encodeUriComponent不工作(EncodeUri工作)