0

给出这个方法,我声明了一个包含字符串值的变量“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;
    }

我该怎么做?

提前致谢!

4

2 回答 2

3

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

于 2012-04-20T14:44:26.693 回答
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 );
  }
}
于 2012-04-20T14:46:31.187 回答