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

変数を更新しました。ここでの唯一の問題は、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 に答える
3

AJAX 呼び出しは非同期です。応答が受信された後に実行する必要があるコードはすべて、成功のコールバック (またはそのコールバックによって呼び出される関数) に含める必要があります。

于 2012-04-20T14:44:26.693 に答える