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

问题描述:

给出此方法,我声明一个变量“answer”,其中包含一个String值。然后我调用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; 
    } 

我应该怎么做?

在此先感谢!

您确实更新了变量。这里唯一的问题是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); 
    } 
} 
+0

谢谢gnarf!我会试试!你能看看编辑过的问题吗?我删除了这一行:answer + ='true'; 我怎样才能返回该变量,而不是调用alert方法? – Lucas 2012-04-20 14:50:17

+0

@你不这样做 - 你使用回调函数作为'verificarRespuestasAjax'的参数 - 当你有你的答案时你可以调用它。欢迎来到异步思考。 – gnarf 2012-04-21 14:14:06

AJAX调用是异步的。在收到响应之后应该运行的任何代码都必须位于成功回调(或该回调调用的函数)中。