2014-04-29 42 views
2

我有以下代码应该重定向到AJAX方法完成后我的网站的索引页。它重定向但是页面没有加载任何内容,它只是一个带背景的空白页面。jQuery AJAX后重定向问题

function login(){ 
    var uname = document.getElementById("UserName").value; 
    var upass = document.getElementById("Password").value; 

    var response = $.ajax({ type: "POST", 
     url: "../../php_scripts/ajax.php", 
     data: "call=login(" + uname + ", " + upass + ")", 
     async: false 
    }).responseText; 

    window.location.replace("http://www.domainname.com"); 
} 

什么会导致此问题?这可能是一个服务器问题?

[编辑]

另外,如果我正确地把AJAX一切加载上面的重定向呼叫。

[EDIT 2]

如果我使用任何种回调方法的异步AJAX它引起相同问题。我开始认为这是一个jQuery错误。

+0

重新定义'AJAX'没有** A ** –

+0

@ user3585147检查像这样'if(response.readyState == 4 && response.status == 200)' – Pramod

+0

感谢您希望将您的帖子标记为已解决。做到这一点的最佳方式是添加自己的答案和自我接受,所以很清楚哪个答案最能帮助你。我已经为你做了这件事(标记为社区维基,所以没有人得到代表点),但将来你可以自己做,如果你喜欢。你现在会打勾吗? – halfer

回答

0

(发布代表OP的)。

经过数小时的修补后,我发现问题的罪魁祸首。它与JavaScript或AJAX无关 - 事实上这个错误来源于SQL数据库。有一个不正确的建立关系约束,导致我的PHP记录更新方法失败。

这使得该方法返回null返回到调用方法,然后将其保存到变量中,然后在该变量上调用成员方法。调用null类型的成员方法破坏了PHP,这就是为什么我的页面上没有显示任何内容。

0

您需要对ajax调用成功进行重定向。

如果你的请求是async:false,那么你不应该使用ajax.done(),ajax.fail()等方法来注册回调方法,而是你需要使用success/error/complete选项来传递回调方法到阿贾克斯电话

$.ajax({ 
    async: false, 
    success: function(){ 
     window.location.replace("http://www.domainname.com"); 
    }, 
    error: function(){ 
    }, 
    complete: function(){ 
     window.location.replace("http://www.domainname.com"); 
    } 
}) 
+1

我试过了,这是一个同步而不是异步ajax调用(注意async false)。 – DarkPhoton

+1

查看更新后的帖子。如果你的请求是异步false,那么你不应该使用ajax.done(),而应该使用成功/错误的回调方法等。 – Johnston

+0

@Johnston↑↑↑这是正确的,async false被推荐用于延迟/承诺对象 –

-1

使用complete回调重定向到所需的页面。完成请求后,您将被重定向到页面。

试试这个:

function login(){ 
    // use jquery anyway if you reference to this 
    var uname = $("#UserName").val(); 
    var upass = $("#Password").val(); 

    var response = $.ajax({ type: "POST", 
     url: "../../php_scripts/ajax.php", 
     data: "call=login(" + uname + ", " + upass + ")", 
     async: false, 
     complete: function() { 
      // redirects is done with below code 
      window.location.replace("http://www.domainname.com"); 
     } 
    }).responseText; 
} 
+0

伟大的你解释变化的行为 –

+0

嗯,我已经把评论。 –

+0

注意:用户正在进行同步呼叫,而不是asyc –