我在我的网站上有一个弹出式表单用于注册。而且,我想在提交之前确认该电子邮件尚未使用。我在表单中使用“提交时”来调用validateForm。对validateForm的调用有效。当我在函数中没有Ajax调用时,它甚至可以工作。但是,当我添加我的Ajax调用时,Ajax仍然无法正常工作。它直接出错:我得到Object Object。我的Ajax部分有什么问题会使它无法工作?可以在我的主机上进行一些设置吗?
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"> </script>
<script type="text/javascript">
function validateForm()
{
var email = document.forms["signupform"]["email"].value;
if (email == "")
{
return false;
}
else
{
$.ajax({
type: "POST",
url: "/CheckEmail2.php",
data: {User_Email:email},
dataType: "text",
success: function(resp)
{
if (respects == "Found")
{
return false;
}
else
{
return true;
}
},
error: function(data){
alert(data);
}
}); //end Ajax
}
}
</script>
答案 0 :(得分:0)
您正在获取JSON中的数据,这就是为什么必须console.log来检查而不是发出警报的原因,alert()
无法正常工作,并且您的ajax也正常工作。
console.log(data);
使用f12在浏览器上打开开发人员工具,然后可以在控制台选项卡中签入。
答案 1 :(得分:0)
不清楚返回的是哪种类型的数据。您在代码中指出了text
,但是如果是json
,那将会改变事情。
请使用以下代码进行测试:
function validateForm(){
var email = document.forms["signupform"]["email"].value;
var result = false;
if (email != ""){
$.ajax({
type: "POST",
url: "/CheckEmail2.php",
data: { "User_Email": email },
dataType: "text",
success: function(resp){
console.log(resp);
if (resp != "Found"){
result = true;
}
},
error: function(data, status){
console.log(data, status);
}
}); //end Ajax
}
return result;
}
测试时,您应该在控制台中看到结果。还不清楚您打算如何使用函数,但是我认为它需要返回true
或false
,因此必须在$.ajax()
调用之外完成。
我不确定,但是如果返回了true
,我想您想返回Found
,但这不是您正在使用的逻辑。因此,请考虑您希望它如何工作。
更新
我会在您的PHP中建议以下内容:
<?php
$search = array(
"term" => "",
"found" => false,
"results" => ""
);
if(isset($_POST['User_Email'])){
$search['term'] = $_POST['User_Email'];
if(strpos($_POST['User_Email'], "@")){
$search['found'] = true;
$search['results'] = $_POST['User_Email'];
}
}
header("Content-type:application/json");
echo json_encode($search);
?>
这将确保您返回JSON数据,并且将更易于在AJAX代码中进行寻址。进行如下更改:
function validateForm(){
var email = document.forms["signupform"]["email"].value;
var result = false;
if (email != ""){
$.ajax({
type: "POST",
url: "/CheckEmail2.php",
data: { "User_Email": email },
dataType: "json",
success: function(resp){
console.log(resp);
if(resp.found){
result = true;
}
},
error: function(data, status){
console.log(data, status);
}
}); //end Ajax
}
return result;
}
希望有帮助。
答案 2 :(得分:-1)
您正在接收json对象,将数据类型更改为“ json”,然后遍历... 像这样
$.ajax({
type: "POST",
contentType: 'application/json',
url: "/CheckEmail2.php",
data: {User_Email:email},
dataType: "json",
success: function(data){
if(data.results.length > 0) {
for(i in data.results){
var eachItem = data.results[i];
var xxx = eachItem.xxx; // example
console.log(xxx);
.....
...