2013-01-08 17 views
9

Ho cercato di risolvere questo per un po 'di tempo, ma non riesco a farlo funzionare. Quando un utente fa clic su un link, gli viene chiesto di confermare che intende intraprendere questa azione. Quindi viene effettuata una chiamata ajax. Lo script chiamato funziona correttamente e restituisce una stringa a cui reindirizzare.window.location.href su un successo jax non funziona

Ho visto diversi post qui su problemi con window.location, ma nessuno di loro ha potuto risolvere il mio.

Il mio codice:

function confirm(a,b,c){ 
     var r=confirm("Are you sure to do this?"); 
     if(r==true){ 
      $.ajax({ 
       type: "POST", 
       url: "/process-action.php", 
       async: false, 
       data: {a:a,b:b,c:c}, 
       success: function(data){ 
        window.location.href = data; 
       } 
      }); 
     } else { 
      return false; 
     } 
    } 

Se faccio alert(data) invece di window.location.href = data posso vedere che i dati corretti è passato. Ad esempio/utente/homepage. Tuttavia, il reindirizzamento non sta avendo luogo.

Se si è tentato di sostituire il percorso relativo con l'intero URL, ma non ha funzionato neanche.

+0

provare location.href = dati – Andy

risposta

16

Provare a utilizzare assign() invece:

window.location.assign(data); 

window.location.href è una struttura, non un metodo.

+0

Grazie, ha funzionato! – user1662927

+0

non funziona per me :(in IE 11 – Reena

+0

@reena dovrebbe funzionare bene Controllare la console per errori –

1

Località assign() Metodo

The assign() method is supported in all major browsers. 
-1

È anche possibile utilizzare window.location = "someurl";

+0

Questo approccio non funziona nel moderno browser mobile Chrome su Android. .assegnare() approccio da Rory McCrossan dovrebbe invece essere usata la risposta. –

0

È possibile utilizzare questo

<form action="submit.php" onsubmit="return false;" method="post">

e il vostro stesso script sarà lavoro.

+0

Si prega di spiegare più – Panther

+0

quando si invia modulo utilizzando ajax di quanto non si sarà in grado di ricaricare la posizione in caso di successo perché il modulo verrà inviato per dare azione. quindi abbiamo aggiunto la funzione onsubmit in modo che il modulo non venga inviato ed è possibile inviare i dati con ajax e ricaricare la pagina correttamente senza errori. –

Problemi correlati