Ajax-код не работает и возвращает Object Object

У меня есть всплывающая форма для регистрации на моем сайте. И я хочу убедиться, что электронная почта еще не используется до отправки. Я использую «при отправке» внутри формы для вызова 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

Решение

вы получаете данные в формате JSON, поэтому вам нужно проверить console.log вместо alert, alert() не будет работать, и ваш AJAX работает.

console.log(data);

используйте f12, чтобы открыть инструменты разработчика в ваших браузерах, а затем вы можете проверить в нем вкладку консоли.

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;
}

Надеюсь, это поможет.

0

вы получаете объект 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);
.....
...
-1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector