Javascript 表单onsubmit返回在xmlhttp.open之后失败
我的表单向数据库添加一行。我想做的是检查我的数据是否已经在其中,并让我确认是否需要添加新数据 表格:Javascript 表单onsubmit返回在xmlhttp.open之后失败,javascript,return-value,form-submit,xmlhttprequest,Javascript,Return Value,Form Submit,Xmlhttprequest,我的表单向数据库添加一行。我想做的是检查我的数据是否已经在其中,并让我确认是否需要添加新数据 表格: 如果我单独保持我的确认提示,返回false将正常工作并停止提交。另一方面,它嵌套在xmlhttp.open中,提交我回答的任何内容。任何好的或坏的想法都将受到赞赏 您不能从异步方法返回!函数在调用返回之前完成。它是异步的。只要调用.send,check函数就会返回ANWYAYS。它不会等待ajax响应返回,所以没有办法这么做?在自己的函数中取出xmlhttp并进行回调以确认是否找到了它?在js中
如果我单独保持我的确认提示,返回false将正常工作并停止提交。另一方面,它嵌套在xmlhttp.open中,提交我回答的任何内容。任何好的或坏的想法都将受到赞赏 您不能从异步方法返回!函数在调用返回之前完成。它是异步的。只要调用.send,check函数就会返回ANWYAYS。它不会等待ajax响应返回,所以没有办法这么做?在自己的函数中取出xmlhttp并进行回调以确认是否找到了它?在js中使用submit函数而不是return,我使它工作了。感谢您的初步指导!
<form method="POST" onsubmit="return check();">
<input type="text" name="lok" placeholder="lokalitet" value="">
<input type="text" id="cr" name="cr" value="" autocomplete="off">
<input type="submit" value="Add">
</form>
function check()
{
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200){
var response = xmlhttp.responseText;
if(response!="")
{
if(!(confirm('Already added:\n' + response + '\n\nAdd anyway?')))
{
return false;
}
}
}
}
var cr = document.getElementById('cr').value;
xmlhttp.open("GET","check.php?q=" + cr);
xmlhttp.send();
}