2012-04-20 33 views
0

給出此方法,我聲明一個變量「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; 
    } 

我應該怎麼做?

在此先感謝!

回答

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); 
    } 
} 
+0

謝謝gnarf!我會試試!你能看看編輯過的問題嗎?我刪除了這一行:answer + ='true'; 我怎樣才能返回該變量,而不是調用alert方法? – Lucas 2012-04-20 14:50:17

+0

@你不這樣做 - 你使用回調函數作爲'verificarRespuestasAjax'的參數 - 當你有你的答案時你可以調用它。歡迎來到異步思考。 – gnarf 2012-04-21 14:14:06

3

AJAX調用是異步的。在收到響應之後應該運行的任何代碼都必須位於成功回調(或該回調調用的函數)中。

相關問題