gpt4 book ai didi

javascript - 单击事件处理程序中的 XMLHttpRequest 状态 0

转载 作者:行者123 更新时间:2023-12-02 15:21:25 24 4
gpt4 key购买 nike

我正在编写一个 Google Chrome 扩展程序,以利用我们编写的 API。我遇到的问题是 popup.html 有一个登录表单,当按下提交按钮时,它会调用必要的身份验证代码,其中涉及向 API 服务器发出几个 XMLHttpRequest。

代码如下:

authenticate.js

function authenticate(username, password)
{
var xhr = new XMLHttpRequest();
xhr.open("GET", "<api-server>/challenge?username=dummyusername", true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
alert(xhr.status);
}
};
xhr.send();
}

/*Gets the username and password textboxes from popup.html and passes their values on to authenticate()*/
function getCredentials()
{
authenticate("test", "test");
}

document.addEventListener("DOMContentLoaded", function() {
var submitBtn = document.getElementById("submitBtn");
if (submitBtn != null) {
submitBtn.onclick = getCredentials;
}
});

popup.html

<!doctype html>
<html>
<head>
<title>Login Page</title>
</head>
<body>
<form>
<label for="username">Username:</label>
<input type="text" id="usernameTxt"><br>
<label for="password">Password:</label>
<input type="password" id="passwordTxt"><br><br>
<input type="submit" id="submitBtn" value="Submit">
</form>
<script src="authenticate.js"></script>
</body>
</html>

ma​​nifest.json

{
"manifest_version": 2,

"name": "Chrome Extension",
"description": "Chrome Extension",
"version": "1.0",
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"permissions": [
"tabs",
"<all_urls>",
"activeTab",
"https://ajax.googleapis.com/",
"<api-server>"
]
}

但是,如果我替换:

document.addEventListener("DOMContentLoaded", function() {
var submitBtn = document.getElementById("submitBtn");
if (submitBtn != null) {
submitBtn.onclick = getCredentials;
}
});

与:

document.addEventListener('DOMContentLoaded', function() {
getCredentials();
});

它做了正确的事情,这让我相信这与它是从点击事件处理程序调用的事实有关,并且也许不知何故权限尚未扩展到按钮。

我看到了这篇文章( Chrome Extension: XMLHttpRequest canceled (status == 0) )并添加了 "<all_urls>"权限,这没有什么区别。

最佳答案

取消点击,这样表单就不会提交。

document.getElementById("submitBtn").addEventListener('click', function(evt){
evt.preventDefault();
getCredentials();
});

关于javascript - 单击事件处理程序中的 XMLHttpRequest 状态 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34022774/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com