我遇到了一个问题。我正在尝试使用表单的 onsubmit='function();' 从表单发送获取请求 和阿贾克斯。
<html>
<head>
<script type='text/javascript'>
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function(){
window.alert("readystate change: " + xmlhttp.readyState + " , " + xmlhttp.status);
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
document.getElementById('adminPanel').innerHTML = xmlhttp.responseText;
}
}
function submit_password(){
xmlhttp.open("GET","./src/admin_pass.php");
xmlhttp.send();
}
</script>
</head>
<body>
<form onsubmit='submit_password();'>
<input type='password' placeholder='PASSWORD'>
</form>
<div id='adminPanel'>
</div>
</body>
</html>
<?php
echo "test text";
?>
发生的情况是,当我使用表单提交从函数内部进行调用时,我得到 status=0 错误。如果我删除该功能并让所有内容立即运行,它执行得很好。为什么是这样?我已经在谷歌上搜索了一段时间,找不到与我正在尝试做的事情相同的例子。我最终可能最终会使用 jQuery 的 ajax 函数,但我真的想避免仅仅为此而包含它。
编辑:好的,所以我能找到的是 XMLhttprequest status=0 表示存在 http 连接错误。所以也许我的网址有问题?我认为情况并非如此,因为我的结构如下所示:
root
src
admin_pass.php
我真的需要输入 http://localhost/src/admin_pass.php 吗?我之前在测试工作中使用过相对 url,这很好。
编辑:添加完整示例
固定的:
老实说,我不知道为什么这解决了这个问题。我从一些回复中发现问题可能出在使用表单上。我认为这是不必要的。
<html>
<head>
<title>Admin Page</title>
<script type='text/javascript'>
function submit_password(){
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function(){
window.alert("readystate change: " + xmlhttp.readyState + " , " + xmlhttp.status);
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
document.getElementById('adminPanel').innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET","./src/admin_pass.php",true);
xmlhttp.send();
}
function check_enter(e){
if(e.keyCode == 13){
submit_password();
}
}
</script>
</head>
<body>
<input id='password' type='password' placeholder='PASSWORD PLEASE' onkeyup='check_enter(event);'>
<div id='adminPanel'>
</div>
</body>
</html>