Можете ли вы использовать условное 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 с которым был сделан запрос, вы можете сделать это??
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">
Конечно, вы можете, но это зависит от того, какой тип значения вы собираетесь вернуть из 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 ..