성함, 성, 날짜가있는 작은 양식이 있습니다. 클릭하여 양식을 제출할 때 중복 된 항목 (Ajax 포함)을 데이터베이스에서 확인하고 이미 1 개 이상의 항목이있는 경우 다른 제출을 확인하는 확인 창을 표시하십시오. 입력 사항이없는 경우 확인이 표시되지 않아야합니다.PHP AJAX 양식 확인 제출
Ajax PHP 페이지의 결과없이 어떤 이유로 인해 확인을 표시하는 것 같습니다. xmlHttp.send(null)
줄 뒤에 경고 메시지를 보내면 PHP에서 텍스트를 가져 와서 (원하는 경우) 코드가 실행되는 순서를 잘못 이해했다고 생각하게 만듭니다. 여기에 코드입니다 :
자바 스크립트 :
function check_duplicates() {
var first = document.getElementById('first_name').value;
var last = document.getElementById('last_name').value;
var date = document.getElementById('event_date').value;
var xmlHttp = GetXmlHttpObject();
if (xmlHttp == null) {
alert ("Your browser does not support AJAX!");
return;
}
var result = "ERROR - Ajax did not load properly";
var url="check_duplicate.php";
url=url+"?first="+first;
url=url+"&last="+last;
url=url+"&date="+date;
xmlHttp.onreadystatechange=function() {
if(xmlHttp.readyState==4) {
result = xmlHttp.responseText;
alert("RESULT="+result);
if(result != "clean") {
var validate = confirm(result);
return validate;
}
}
}
xmlHttp.open("GET",url,true);
var test = xmlHttp.send(null);
}
function GetXmlHttpObject() {
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;
}
PHP :
// DATABASE CONNECTION INFORMATION REMOVED
$first = $_GET['first'];
$last = $_GET['last'];
$date = date('Y-m-d',strtotime($_GET['date']));
$sql = "SELECT COUNT(*) AS count FROM Table WHERE First='$first' AND ".
"Last='$last' AND Date='$date'";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
if($row['count'] > 0) {
if($row['count'] == 1) {
echo "There is already an entry for ".$first." ".$last." on ".
date('M jS',strtotime($date)).".\n".
"Are you sure you want to submit this entry?";
}
else { // plural version of the same message
echo "There are already ".$row['count']." entries for ".$first." ".
$last." on ".date('M jS',strtotime($date)).".\n".
"Are you sure you want to submit this entry?";
}
} else {
echo "clean";
}
그것은 "- 아약스가 제대로로드되지 않은 결과 = ERROR"을 경고 하는가? –
아니요, "RESULT ="를 경고합니다. 그러나 내가 말했듯이,'var test = xmlHttp.send (null); 다음에 간단한 경고를 넣으면 적절한 출력 (PHP)으로 경고합니다. 이것이 함수 호출의 지연/순서에 대해 혼란스러워합니다. – Bing
아아,하지만 당신은 이미 결과의 값을 "ERROR - Ajax가 제대로로드되지 않았습니다"로 설정 한 것을 보았습니다.이 값은 비워지기 위해 덮어 쓰여집니다. 귀하의 PHP 어딘가에 공백을 반환합니다. 그래도 어디서 볼 수 없어요. –