如何从。$ getJSON方法中的jQuery函数更新变量

时间:2012-04-20 14:38:49

标签: javascript jquery string getjson

给出这个方法,我声明一个包含String值的变量“answer”。然后我调用getJSON方法。我想更新该方法中提到的变量:

function verificarRespuestasAjax(pregunta, pinId, respuesta, index){
        var answer = pregunta;
        $.getJSON("../usuarios/comparar_respuestas_JSON", {pinId: pinId, preguntaId: pregunta, respuesta: respuesta.val() }, function(verifRespuestas){
            if(verifRespuestas){
                $("#mensajeError"+index).remove();
                answer += 'true';
            }else{
                if (!$("#mensajeError"+index).length > 0)
                    $(respuesta).after('<em id="mensajeError'+index+'">*La respuesta no coincide</em>');
                answer += 'false';
            }

        });
        return answer;
    }

我该怎么做?

提前致谢!

2 个答案:

答案 0 :(得分:3)

AJAX调用是异步的。在收到响应后应该运行的任何代码都需要在成功回调中(或者该回调调用的函数)。

答案 1 :(得分:3)

您确实更新了变量。这里唯一的问题是getJSON调用是异步的。在alert()执行时,getJSON的函数回调尚未被调用。

您需要将alert(answer)代码放在从JSON回调中调用的函数中。

function verificarRespuestasAjax(pregunta, pinId, respuesta, index){
  var answer = pregunta;
  $.getJSON("../usuarios/comparar_respuestas_JSON", {pinId: pinId, preguntaId: pregunta, respuesta: respuesta.val() }, function(verifRespuestas){
    // .... snip ....
    completed();
  });
  answer += 'true';
  function completed() {
    alert( answer );
  }
}