0
안녕하세요 저는 jQuery를 사용하지 않고 Ajax를 사용하는 오래된 방법을 사용하고 있습니다. 내 아약스 코드가 false를 반환하면 양식 제출을 중단하고 싶습니다. 제출하고 jsp 형식으로 돌아갈 때 Ajax 함수를 호출합니다. checkCaptcha.jsp 페이지Ajax가 false를 반환하는 경우 양식 제출을 방지하는 방법
다음function checkCaptcha1(){
alert("inside checkCaptcha1");
//alert(document.signupform.recaptcha_response_field.value.trim());
var recaptcha_challenge_field = document.signupform.recaptcha_challenge_field.value.trim();
alert(recaptcha_challenge_field);
var recaptcha_response_field = document.signupform.recaptcha_response_field.value.trim();
alert(recaptcha_response_field);
if(recaptcha_response_field.trim()==""){
document.getElementById("captcha").innerHTML = "Enter CAPTCHA Code";
return false;
}else{
xmlHttp=GetXmlHttpObject();
alert(XMLHttpRequest);
if (xmlHttp==null)
{
alert ("Browser does not support HTTP Request");
return false;
}
var url="../ajax/checkCaptcha.jsp";
url=url+"?recaptcha_challenge_field="+recaptcha_challenge_field+"&"+"recaptcha_response_field="+recaptcha_response_field;
alert(url);
xmlHttp.onreadystatechange=showData;
xmlHttp.open("GET",url,false);
xmlHttp.send(null);
}
}
function showData(){
if (xmlHttp.readyState==4 || xmlHttp.readyState==200)
{
alert("hello");
var showdata = xmlHttp.responseText;
alert(showdata);
var str = showdata.split("#$");
//alert("inside checkCaptcha2 str="+str);
alert("Str[1]="+str[1]);
if(str[1]=="fail"){
alert(str[1]);
document.getElementById("captcha").innerHTML = "CAPTCHA Validation Failed ! Try Again";
//flag2=0;
//alert("Set flag2="+flag2);
return false;
//window.location.href("signup.jsp");
}
else{
//alert("Success");
document.getElementById("captcha").innerHTML = "";
//flag2 = 1;
//alert("Set flag2="+flag2);
//alert("Calling validate2()");
//validate2();
return true;
}
}
else{
}
}
function GetXmlHttpObject()
{
alert("XML Object created");
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
//Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
은 다음과 같습니다 : I는 제출하지 않을
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ page import="net.tanesha.recaptcha.ReCaptchaImpl"%>
<%@ page import="net.tanesha.recaptcha.ReCaptchaResponse"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<% System.out.println("Hello check CAPTCHA"); %>
<% try{
String remoteAddr = request.getRemoteAddr();
System.out.println(remoteAddr);
ReCaptchaImpl reCaptcha = new ReCaptchaImpl();
reCaptcha.setPrivateKey("6LdlHOsSAAAAACe2WYaGCjU2sc95EZqCI9wLcLXY");
String challenge = request.getParameter("recaptcha_challenge_field");
System.out.println(challenge);
String uresponse = request.getParameter("recaptcha_response_field");
System.out.println(uresponse);
ReCaptchaResponse reCaptchaResponse = reCaptcha.checkAnswer(remoteAddr, challenge, uresponse);
if (reCaptchaResponse.isValid()) {
System.out.print("#$success#$");
out.print("#$success#$");
} else {
System.out.print("#$fail#$");
out.print("#$fail#$");
}
}catch(NullPointerException e){
e.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}
%>
</body>
</html>
여기
<form name="signupform" method="post" action="../TenantSignup" onsubmit="return checkCaptcha1()">
</form>
가 아약스 코드 :
여기 내 코드입니다 ajax가 false를 반환하면 form을 반환하지만 ajax가 false를 반환하면 여전히 이 양식을 제출합니다. 여기 동기 요청을 사용하고 있는데, 심지어 같은 일이 비동기 요청을하게하더라도 이 발생합니다.
도와주세요. 감사합니다.
'1'또는 '0'을 (를) 반환하십시오. – halkujabra
폼의 전송이 아닌 다른 이벤트에서 Ajax 호출을 수행합니다. 어쩌면 제출 단추를 클릭하거나 마지막 입력에서 Enter 키를 누르는 것입니다. ajax 호출이 true를 반환하면 수동으로 양식을 제출하십시오. (내가 생각하기에 form.submit() 또는 그 줄에 뭔가가있는 것) – user3417400
JQuery를 사용하여 양식을 제출하는 click 이벤트를 캡처하십시오. 그런 다음'return false'라고 말하면 제출을 취소합니다. – CSharper