#javascript #jquery #ajax
#javascript #jquery #ajax
Вопрос:
У меня есть функция, которая вызывает ajax-запрос к веб-сервису.
результатом вызова ajax является объект .
Кроме того, мне нужно значение отдельного атрибута этого возвращаемого объекта, который является responseJSON при нажатии кнопки
как я могу его получить?
Вот моя функция ajax:
checkBtnPostulate: function () {
return $.ajax({
method: 'POST',
url: annonce.route.testpostulate,
data: {msg}
dataType: 'json',
success: function (data) {
//console.log(data);
if (data == 1) {
$("#postulate-btn").removeClass("btn-postuler");
$("#postulate-btn #postulerState").text("Retirer la candidature");
} else if (data == 0) {
$("#postulate-btn").addClass("btn-postuler");
$("#postulate-btn #postulerState").text("Postuler");
} else if (data == 2) {
$("#postulate-btn").hide();
}
},
error: function (data) {
console.log(data);
}
});
},
и вот функция кнопки click, в которой я использую повторение моей предыдущей функции.
postulate: function () {
$('body').one().on('click', '#submitCandidature', function (e) {
window.annonce.checkBtnPostulate(); //MY PREVIOUS FUNCTION CALL
var response = window.annonce.checkBtnPostulate(); // the object returned
if (response.responseJSON == 1) { // i need to get here the value
var FormCandidature = $("#form-candidature");
var candidatureObject = serializeObject(FormCandidature);
candidatureObject["id_mission"] = id_annonce;
var candidatureObject = JSON.stringify(candidatureObject);
window.sendData.start(FormCandidature, candidatureObject, "#modal-postuler");
}
})
}
});
},
Как я могу получить его самым простым способом???
Комментарии:
1. если
data
это объект, то почему ваш код сравнивает его с interger?if(data == 1)
подразумевало бы, что это число, а не объект..2. вы пробовали
if (data.responseJSON == 1)
вместоif (data == 1)
?
Ответ №1:
Из того, как я понимаю, о чем вы спрашиваете, я бы подумал, что использование обратного вызова в вашем вызове ajax было бы лучшим способом достичь того, что вы ищете, следующим образом будет выглядеть ваш код с использованием обратного вызова:
checkBtnPostulate: function (callback) {
return $.ajax({
method: 'POST',
url: annonce.route.testpostulate,
data: {msg}
dataType: 'json',
success: function (data) {
callback(data);
},
error: function (data) {
console.log(data);
}
});
},
postulate: function () {
$('body').one().on('click', '#submitCandidature', function (e) {
window.annonce.checkBtnPostulate(function(data){
//Confused with what you want but if you have an object off of data you might do something like this
if(data.responseJSON == 1){
var FormCandidature = $("#form-candidature");
var candidatureObject = serializeObject(FormCandidature);
candidatureObject["id_mission"] = id_annonce;
var candidatureObject = JSON.stringify(candidatureObject);
window.sendData.start(FormCandidature, candidatureObject, "#modal-postuler");
}
if (data == 1) {
$("#postulate-btn").removeClass("btn-postuler");
$("#postulate-btn #postulerState").text("Retirer la candidature");
} else if (data == 0) {
$("#postulate-btn").addClass("btn-postuler");
$("#postulate-btn #postulerState").text("Postuler");
} else if (data == 2) {
$("#postulate-btn").hide();
}
});
if (response.responseJSON == 1) { // i need to get here the value
var FormCandidature = $("#form-candidature");
var candidatureObject = serializeObject(FormCandidature);
candidatureObject["id_mission"] = id_annonce;
var candidatureObject = JSON.stringify(candidatureObject);
window.sendData.start(FormCandidature, candidatureObject, "#modal-postuler");
}
})
}
});
},
Выполнение этого подобным образом позволит вам напрямую обращаться к данным из вашего вызова ajax в вашем событии click.
Ответ №2:
data[ix].attribute
пример;
data[0].name
Если в JSON есть более одного объекта, вы можете захотеть перебирать каждый объект?
Том