Javascript Ajax代码不起作用
所以我有一个程序,用户在其中输入一个城市和一个国家。程序在数据库中查找城市是否已经存在,如果存在,我将使用ajax显示警告消息,如果不存在,我将城市添加到数据库中 表格如下:Javascript Ajax代码不起作用,javascript,php,ajax,Javascript,Php,Ajax,所以我有一个程序,用户在其中输入一个城市和一个国家。程序在数据库中查找城市是否已经存在,如果存在,我将使用ajax显示警告消息,如果不存在,我将城市添加到数据库中 表格如下: <form action="addCity.php" method="get" onsubmit="return validateCityInfoForm();"> 如果城市已经存在于数据库中,则checkIfCityExists.php回显“true”,否则回显“false” 问题是它总是在db中添加城市,
<form action="addCity.php" method="get" onsubmit="return validateCityInfoForm();">
如果城市已经存在于数据库中,则checkIfCityExists.php回显“true”,否则回显“false”
问题是它总是在db中添加城市,即使城市已经存在。
php返回“true”,但这似乎无关紧要
我真的不知道是什么问题,任何帮助都将不胜感激。
谢谢
下面是checkIfCityExists.php:
<?php
include ('database_connection.php');
$city = mysqli_real_escape_string($dbc, $_GET['city']);
$country = mysqli_real_escape_string($dbc, $_GET['country']);
//check if the city and country already exists in the database
$query_verify = "SELECT * FROM city WHERE name = '$city' AND country = '$country'";
$result_verify = mysqli_query($dbc, $query_verify);
if(mysqli_num_rows($result_verify) == 0) { //if the city does not appear in the database
echo "false";
}
else {
echo "true";
}
?>
问题是,您的onsubmit没有返回。
因此validateCityInfoForm()
返回未定义,这不会阻止浏览器执行操作validateCityInfoForm()
应返回false
,以防止浏览器提交表单。然后在onreadystatechange
调用表单。如果需要,提交()
。您正在尝试进行异步调用以进行验证。当电话回电时已经太迟了,因为表单已经提交了
Ajax调用不会暂停代码的执行,而是进行调用,然后执行其余的代码
您需要做的是将其分为两个步骤,进行Ajax调用,当onreadystatechange返回时,提交表单 我认为问题出在PHP文件中。有了这段代码,您只需要得到请求的结果,而不需要对DB做任何事情。您的JS看起来很好,添加到数据库是在PHP中完成的,因此问题可能出在代码的某个地方。将代码张贴在处理数据库的地方欢迎来到异步调用的世界。当您直接在浏览器中打开checkIfCityExists.PHP?city=…
URL时,会返回什么?问题似乎出在您的PHP中。如果Async设置为false而不是true@YatinTrivedi我知道这是一个坏习惯。
<?php
include ('database_connection.php');
$city = mysqli_real_escape_string($dbc, $_GET['city']);
$country = mysqli_real_escape_string($dbc, $_GET['country']);
//check if the city and country already exists in the database
$query_verify = "SELECT * FROM city WHERE name = '$city' AND country = '$country'";
$result_verify = mysqli_query($dbc, $query_verify);
if(mysqli_num_rows($result_verify) == 0) { //if the city does not appear in the database
echo "false";
}
else {
echo "true";
}
?>