2013-04-03 101 views
1

我不確定這是否與ajax調用相關。我對Ajax非常陌生,所以我懷疑它是原因。ajax事件後window.location沒有觸發

我運行下面的javascript:

function GetXmlHttpObject() { 
"use strict"; 
var objXMLHttp = null; 

if (window.XMLHttpRequest) { 
    objXMLHttp = new XMLHttpRequest(); 
} else if (window.ActiveXObject) { 
    objXMLHttp = new window.ActiveXObject("Microsoft.XMLHTTP"); 
} 

return objXMLHttp; 
} 

function delete_director(i) { 
"use strict"; 
var r, url; 

r = window.confirm("Are you sure you want to disable this director"); 
url = "ajax.php?task=director&event=delete&UserId=" + i; 

if (r === true) { 
    mdata = new GetXmlHttpObject(); 

    if (mdata === null) { 
     alert("Browser does not support HTTP Request"); 
     return; 
    } 

    mdata.open("GET", url, true); 
    mdata.send(null); 
} 
} 

而且在調用下面的PHP函數:

function deletedirector() 
{ 
    $UserId=mysql_real_escape_string($_GET['UserId']); 
    $query = "update tbl_users set IsDisabled='1' where UserId=".$UserId; 
    $result = mysql_query($query) OR die('Cannot perform query!'); 
    if ($result) { 
     error_log("a"); 
     ?><script type="text/javascript">window.location='index.php?task=director&success=Director Successfully Deleted.'</script><? 
    } else { 
     error_log("b"); 
     ?><script type="text/javascript">window.location='index.php?task=director&error=Director Deletion Failed.'</script><? 
    } 
} 

的數據庫顯示,導演是在錯誤刪除,並且「一」版畫日誌,但window.location永遠不會觸發。

用戶體驗是瀏覽器提示確認,之後 - 什麼都沒有。一個JavaScript控制檯顯示現在錯誤。

任何想法?

回答

1

您已經與功能返回新對象(XMLHttpRequest的的API),所以你不需要在這裏

... 
if (r === true) { 
    mdata = GetXmlHttpObject(); 
... 

,並嘗試使用onreadystatechange這樣

mdata.onreadystatechange = function(){ 
    if (mdata.readyState === 4) { 
     alert("some text"); 
    } else { 
     alert(mdata.status); 
    } 
}; 
+0

謝謝,捷威。這彈出了三個警報框:「200」,「一些文本」,「一些文本」。我猜測它從php函數中得到了一個HTTP 200,然後狀態在狀態爲!= 4之後又改變了兩次。但是我不確定如何處理這些信息。 – Lurk21 2013-04-04 14:16:46

+0

而不是讓PHP函數做一個window.location,我有onreadystatechange做一個location.reload,並使其工作。謝謝。 – Lurk21 2013-04-04 14:42:52

+0

歡迎您! – Givi 2013-04-04 15:08:26