给出这个方法,我声明一个包含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;
}
我该怎么做?
提前致谢!
答案 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 );
}
}