2014-04-29 40 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 –