Отображать всплывающее оповещение после ответа Ajax

#javascript #php #json #ajax

#javascript #php #json #ajax

Вопрос:

У меня есть запрос JSON с использованием метода post, использующего ajax в этом коде

 $(document).ready(function() {
  $(document).on('submit', '#registration_check', function() {
    var data = $(this).serialize();
    $.ajax({
      type: 'POST',
      url: 'apidomain.com',
      data: data,
      success: function(data) {

        $("#registration_check").fadeOut(500).hide(function() {
          $(".result_1").fadeIn(500).show(function() {
            $(".result_1").html(data);
          });
        });
      }
    });
    return false;
  });
});

  

ответ вернет 3 поля, такие как имя, электронная почта, телефон для этого элемента:

 <div id="result_1"></div>
  

пока все работает хорошо, но я планирую отобразить предупреждение или всплывающее сообщение, если в ответе ajax обнаружено какое-либо возвращаемое значение null. Например:

  1. Если ответ в формате JSON возвращается: имя: джон, электронная почта: jhon@doe.com , телефон: 123456789 пользователь перенаправит на другую страницу (пока сделано)

  2. Но если ответ в формате JSON вернет имя: Джейн, электронная почта: jane@doe.com , телефон:

Появится всплывающее окно или оповещение, внутри текста номер телефона пустой.

Комментарии:

1. Покажите свой php-код

2. Привет, PHP-код находится под apidomain, обрабатывающим запрос. На стороне пользователя я использую html с Ajax, как указано выше

Ответ №1:

Если ваши данные представляют собой объект JSON, то вы можете сделать:

 success: function(data) {
  for (var i in data) {
    if (!data[i]) {
      alert(/* MESSAGE HERE */)
      return;
    }
  }

  // Your regular code here
}
  

Ответ №2:

Вы можете создать ассоциативный массив ваших значений в php-файле и отобразить его в формате json следующим образом

 echo json_encode($array);
  

Затем вы получите это в своем ответе ajax следующим образом

   var objs = JSON.parse(data);
  

Затем вы можете проанализировать значения по таким ключам, как name , email и phone , как вы определили в ассоциативном массиве в вашем php-файле

 console.log(objs.name);
console.log(objs.email);
console.log(objs.phone);
  

Вот как вы можете анализировать значения по отдельности. Вы также можете применить условия по-своему

Ответ №3:

Первое, что приходит мне в голову: вам нужен ответ JSON в элементе document или вы не знаете, как работать с jQuery Ajax?

В любом случае, это решение должно помочь вам в обоих случаях:

 $(document).ready(function()
{   
    $(document).on('submit', '#registration_check', function()
    {       
        var data = $(this).serialize();
        $.ajax({
        type : 'POST',
        url  : 'apidomain.com',
        data : data,
        dataType: 'json', // tell jQuery, that the response data will be a JSON - it will be parsed automatically
        success :  function(data)
                   {
                        // now you have a parsed JSON object in the 'data' var

                        var show_alert = false;

                        if (data.phone === null || !data.phone.length) {
                            show_alert = true;
                        }

                        if (data.email === null || !data.email.length) {
                            show_alert = true;
                        }

                        if (show_alert) {
                            alert('here is the alert :)');
                        }

                        $("#registration_check").fadeOut(500).hide(function()
                        {
                            $(".result_1").fadeIn(500).show(function()
                            {
                                $(".result_1").html(JSON.stringify(data));
                            });
                        });

                   }
        });
        return false;
    });
});