0

i have a ajax post from my form. when it succeed, i want to redirect to another web page..

What i have now:

$.ajax({
        type : 'POST',
        url : '/system/login.php',
        data : formData,
        dataType : 'json',

    success: function(data) {
        if(!data.success){
            if(data.errors.username){
                alert(data.errors.username);
            }

            if(data.errors.password){
                alert(data.errors.password);
            }
            if(data.errors.login){
                alert(data.errors.login);
            }
        }
        else{
            location.href = "http://localhost/me.php"
        }
    },
    error: function(xhr){
     alert(xhr.responseText);
  }
});

Is there someone who can help me? because nothing i tried works.

  • See specifically [this comment](http://stackoverflow.com/questions/2383401/javascript-setting-location-href-versus-location#comment63865970_2383427) on the DUP answer – RiggsFolly May 11 '17 at 12:20
  • Does it trigger the error function? Because the system/login.php probably doesnt return a 200 OK – Jesse de gans May 11 '17 at 12:21

2 Answers2

1

change this line

location.href = "http://localhost/me.php"

to

window.location.href='http://localhost/me.php'

make sure ajax response is ok

Bilal Ahmed
  • 4,005
  • 3
  • 22
  • 42
0

jQuery is not necessary, and window.location.replace(...) will best simulate an HTTP redirect.

window.location.replace(...) is better than using window.location.href, because replace() does not keep the originating page in the session history, meaning the user won't get stuck in a never-ending back-button fiasco.

If you want to simulate someone clicking on a link, use location.href

If you want to simulate an HTTP redirect, use location.replace

For example:

// similar behavior as an HTTP redirect
window.location.replace("http://localhost/me.php");

// similar behavior as clicking on a link
window.location.href = "http://localhost/me.php";