Можете ли вы использовать условное if внутри success в Ajax?


Можно ли использовать условное if для проверки результата переменной?, что-то вроде:

$("#update").submit(function(e){
            e.preventDefault();
            $.ajax({
                url: "ruta/al/archivo/uploadFac.php",
                type: "POST",
                data:  new FormData(this),
                contentType: false,
                cache: false,
                processData: false,
                success: function(data){
                    if(var != 0){
                    $('#upload').modal('hide');
                    $('#Fac').modal('hide');
                    }else{
                        alert("ERROR");
                    }
                },
                error: function(data){
                    console.log(data)
                }
            });
          });
        });

где переменная " var " является переменной, которую я получаю из скрипта uploadFac.php с которым был сделан запрос, вы можете сделать это??

 1
Author: Fernando Garcia, 2018-05-29

2 answers

Структура AJAX - это объект, это дает нам большую гибкость для создания и отмены. Я имею в виду, что узел success хранит анонимную функцию и ведет себя так же, как и любой другой, вы можете вставить любой тип кода внутри. IF, WHILE, FOR, даже вызов другого AJAX (для этого было бы лучше использовать promises и/или Метод .when Jquery)

Я оставляю вам другой способ, как вы можете собрать свой AJAX

$(function(){
  
  var llamarAjax = function(){
    //Aquí declaras el objeto que pasarás como parámetro
    var ajax = {};
    ajax.url = 'mi_url.py';
    ajax.method = 'POST';
    ajax.data = {
      dato1: 'dato1',
      dato2: 'dato2'};
    ajax.success = function(respuesta){
      console.log(respuesta);
      //Inclusive puedes volver a invocar otro ajax
      //llamarAjax();
    };
    ajax.error = function(xhr,err){
     //Aquí mandará error por que no está permitido el uso de AJAX en snippets
      console.log(err);
    };
    
    //Aquí pasas el objeto AJAX
    $.ajax(ajax);
  }
  
  $(document).on('click','#foo',function(){
    llamarAjax();
  });


});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type="button" value="Llamada!" id="foo">
 1
Author: Alberto Siurob, 2018-05-29 15:08:59

Конечно, вы можете, но это зависит от того, какой тип значения вы собираетесь вернуть из back в front, если вы собираетесь отправить объект json будет выглядеть так:

$("#update").submit(function(e){
    e.preventDefault();
    $.ajax({
        url: "ruta/al/archivo/uploadFac.php",
        type: "POST",
        data:  new FormData(this),
        contentType: false,
        cache: false,
        processData: false,
        dataType: 'json',
        success: function(data){
            if(data.resultado != 0){
                $('#upload').modal('hide');
                $('#Fac').modal('hide');
            }else{
                alert("ERROR");
            }
        },
        error: function(data){
            console.log(data)
        }
    });
});

Но если с другой стороны, вы собираетесь отправить string или числовое значение будет просто с параметром data, который получает success:

$("#update").submit(function(e){
    e.preventDefault();
    $.ajax({
        url: "ruta/al/archivo/uploadFac.php",
        type: "POST",
        data:  new FormData(this),
        contentType: false,
        cache: false,
        processData: false,
        success: function(data){
            if(data != 0){
               $('#upload').modal('hide');
               $('#Fac').modal('hide');
            }else{
               alert("ERROR");
            }
        },
        error: function(data){
            console.log(data)
        }
    });
});

Помните, что параметр метода success - это тот, кто получает данные, возвращаемые back ..

 1
Author: Bender Paisa, 2018-05-29 14:51:43