Javascript Ajax: получение значения атрибута объекта ответа ajax

#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 есть более одного объекта, вы можете захотеть перебирать каждый объект?

Том