window.location在ajax事件后没有触发

时间:2013-04-03 21:59:26

标签: javascript ajax

我不确定这是否与ajax调用有关。我对Ajax很新,所以我怀疑它是原因。

我运行以下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><?
    }
}

数据库显示导管已删除,并且“a”在错误日志中打印,但window.location从未触发。

用户体验是浏览器提示确认,之后没有任何内容。 javascript控制台现在显示错误。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您已经使用函数返回新对象(XMLHttpRequest API),因此您不需要 new

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

并尝试使用onreadystatechange这样的

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