如何更新。$ 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);
}
}
答
AJAX调用是异步的。在收到响应之后应该运行的任何代码都必须位于成功回调(或该回调调用的函数)中。
谢谢gnarf!我会试试!你能看看编辑过的问题吗?我删除了这一行:answer + ='true'; 我怎样才能返回该变量,而不是调用alert方法? – Lucas 2012-04-20 14:50:17
@你不这样做 - 你使用回调函数作为'verificarRespuestasAjax'的参数 - 当你有你的答案时你可以调用它。欢迎来到异步思考。 – gnarf 2012-04-21 14:14:06