Результат вызова Ajax не работает должным образом

У меня есть эта функция, где на onkeyup он проверяет номер мобильного телефона, существует ли он в базе данных уже или нет, теперь проблема в том, что даже если ответ «истина», он всегда будет отображаться как ложь

PHP

elseif ($action == 'check_mobile_phone')
{

    $mobile = trim($_GET['mobile']);
    $mobile = json_str_iconv($mobile);

    if (mobile_register($mobile))
    {
        echo 'false';
    }
    else
    {
        echo 'true';
    }
}

Ajax Call

function checkMobilePhone(mobile)
{

  if (mobile == '')
  {
   error.find('#mobile_notice_text').html('Mobile number cant be empty.');
   submit_disabled = true;
  }
  else if (!Utils.isMobile(mobile))
  {
    error.find('#mobile_notice_text').html('Please enter mobile number in local format.');
  }

  if ( submit_disabled )
  {
    document.forms['formUser'].elements['Submit'].disabled = 'disabled';
    return false;
  }
  Ajax.call( 'user.php?act=check_mobile_phone', 'mobile=' + mobile, check_mobile_callback , 'GET', 'TEXT', true, true );
}

Ответ

function check_mobile_callback(result)
{
  var logform = $('form[name = "formUser"]');
  var error = logform.find('#mobile_notice');

  if ( result === "true" )
  {
    document.forms['formUser'].elements['Submit'].disabled = '';
  }
  else
  {
    error.find('#mobile_notice_text').html('Phone number already exists.');
    document.forms['formUser'].elements['Submit'].disabled = 'disabled';
  }
}
if ( result === "true" ) -> результат может быть boolean, попробуйте if (result) или if ( result == "true" )
Nikhil Aggarwal 11.06.2018 12:44

Если вы действительно возвращаете текстовый ответ от вызова AJAX (что не очень хорошая идея), проверьте, нет ли пробелов в возвращаемом значении. Попробуйте добавить result.trim() в оператор if. В противном случае я бы предложил вернуть JSON или другую форму сериализованной структуры данных.

Rory McCrossan 11.06.2018 12:44

Этот код так сложно читать, в первую очередь попробуйте провести рефакторинг кода, сделать его проще. Возможно, вы решите свой код, сделав это.

Raúl Garcia 11.06.2018 12:44

Единственные две важные строчки в коде - это Ajax.call( 'user.php?act=check_mobile_phone', 'mobile=' + mobile, check_mobile_callback , 'GET', 'TEXT', true, true ); и if ( result === "true" ). Что возвращает этот Ajax.call()? изменить: я имею в виду, что он передает обратному вызову?

com 11.06.2018 12:46

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

Zeeshan 11.06.2018 12:47

Пожалуйста, проверьте сообщение, я обновил код и добавил код PHP.

SPK 11.06.2018 13:08

Вы пробовали добавить debugger в check_mobile_callback() и посмотреть, что такое переданная переменная result?

com 11.06.2018 13:12

Кажется, что в ответе есть пробел, я изменил код и добавил пробел перед истиной, и он начал работать, если (результат === "истина")

SPK 11.06.2018 13:17

@SPK в порядке, но вместо этого вы должны исправить ошибочный ответ вместо того, чтобы делать неприятный обходной путь в вашем операторе if. Если у вас плохие данные, рассортируйте их, вместо того чтобы делать систему зависимой от них. Как уже упоминалось, было бы гораздо лучше вернуть JSON с сервера с истинным логическим значением true / false вместо строки, тогда у вас не может быть такой проблемы с пробелами или скрытыми символами.

ADyson 11.06.2018 13:28

пожалуйста, отправьте код для этого метода mobile_register ($ mobile)

sree 11.06.2018 14:51
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
10
72
1

Ответы 1

function mobile_register($mobile)
{
    $res = $GLOBALS['db']->getOne("SELECT COUNT(*) FROM " . $GLOBALS['db']->table('users') .
                                  " WHERE mobile_phone = '$mobile'");
    return $res;
}

Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, как и / или почему он решает проблему, улучшит долгосрочную ценность ответа.

Nic3500 02.09.2018 18:27

Другие вопросы по теме