В моем коде у меня есть два вложенных запроса ajax. Идея состоит в том, что при нажатии ввода на вводе с id placa
введенное значение сначала отправляется в представление ajax1
, выполняет какие-то операции, а затем переходит в представление ajax2
и возвращает какие-то результаты.
Можно было бы предположить, что при переходе на второй ajax запрос, который находится внутри другого, он должен быть напечатан, {'ajax2': true}
но это не так, он печатается{'ajax1': true}
Что я делаю не так?
просмотры.py
from django.http import JsonResponse
def ajax1(request):
if request.method == "POST":
if request.is_ajax():
return JsonResponse({"ajax1": True})
def ajax2(request):
if request.method == "POST":
if request.is_ajax():
return JsonResponse({"ajax2": True})
ajax-запросы
// Función para obtener el token CSRF
function getCookie(name) {
var cookieValue = null;
if (document.cookie && document.cookie != '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = jQuery.trim(cookies[i]);
if (cookie.substring(0, name.length + 1) == (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
$("#input").keypress(function(e) {
if(e.which == 13) {
e.preventDefault();
var csrftoken = getCookie('csrftoken');
var placa = $(this).val();
$.ajax({
url : window.location.href + "ajax1/",
type : "POST",
data : { csrfmiddlewaretoken : csrftoken,
placa : placa,
},
success : function(json) {
$.ajax({
url : window.location.href + "ajax2/",
type : "POST",
data : { csrfmiddlewaretoken : csrftoken,
placa : placa,
},
success: function(data2){
console.log(data2); // Debería imprimir {ajax2: true}
},
error : function(xhr,errmsg,err) {
console.log(xhr.status + ": " + xhr.responseText);
}
});
},
error : function(xhr,errmsg,err) {
console.log(xhr.status + ": " + xhr.responseText);
}
});
}
});
Я рекомендую вам использовать промисы JavaScript (JavaScript Promises), здесь подробная документация, так как они гарантируют, что выполнение запроса может следовать за другим, точно так же, как то, что вы ищете.
Надеюсь, вы найдете его полезным, успехов в развитии, благословений!
Фредди.