Redirigir en setTimeout a una ubicación contenida en una variable fuera del alcance actual

I make an ajax request, and the JSON response, after parsing, gives me the link to the page I want to redirect the user to after 3 seconds.

Lo estoy haciendo de esta manera:

response = JSON.parse(res);
var link = response.link;
setTimeout("window.location.href=link",3000);

However, I get an error message that link is not defined, presumably because it isn't in the scope of the setTimeout script.

¿Cómo puedo solucionar esto?

preguntado el 01 de febrero de 12 a las 13:02

2 Respuestas

Please don't use a string for setTimeout.

response = JSON.parse(res);
var link = response.link;

setTimeout(function ()
{
    window.location.href = link;

}, 3000);

Respondido 01 Feb 12, 18:02

By using a closure (untested):

var aLink;

function getCallBack(link){
     return function(){
         window.location.href = link
     }
}

setTimeout(getCallBack(aLink),3000)

Respondido 01 Feb 12, 22:02

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.