从ajax webservice调用的OnComplete调用ajax webservice第二次不触发OnComplete

时间:2009-10-07 13:23:33

标签: asp.net javascript ajax mootools

我有一个ajaxified .NET webservice,我在我的ASP.NET内容页面上用javascript(mootools)调用MasterPage页面,首先检查用户是否有关联的记者,其次是在没有记者关联的情况下删除用户。< / p>

对Web服务的调用都有效,但第二次调用不在IE8中。 使用FF 3.5.3我在firebug中收到“deleteUserInt is not defined”错误。

我已经读过这可能是一个sytax错误,但似乎看不到它。

请帮忙。

var userId;
var siteName;
var siteFolder;
function userInternalHasUserExternals() {
    siteName = document.location.href.split("/")[document.location.href.split("/").length - 1];
    siteFolder = document.location.href.replace(siteName, "");
    var jsonRequest = new Request.JSON({ url: siteFolder + "Service1.asmx/UserInternalHasUserExternals",
        onComplete: onComplete,
        onFailure: onError,
        urlEncoded: false,
        headers: { "Content-type": "application/json" }
    });
    userId = document.getElementById("<%= HiddenId.ClientID %>").innerText;
    jsonRequest.send(JSON.encode({ 'userInternalId': userId }));
}

function onComplete(results) {
    var fullname = document.getElementById("<%= fullnameTextBox.ClientID %>").value;

    if (results != null && results["d"] != null && results["d"]) {
        alert("Du kan ikke slette " + fullname + ". Kontoen har journalister tilknyttet.");
        return false;
    }

    var deleteUser = confirm("Er du sikker på du vil slette " + fullname + "?");
    if (deleteUser) {
        deleteUserInt();
        window.location = window.siteFolder + "CreateUserInternal.aspx?IsDeleted=true";
    } 
    else
        window.location = window.siteFolder + "EditUserInternal.aspx?UserInternalId=" + window.userId;
}

function deleteUserInt() {
    var request;
    request = new Request.JSON({ url: window.siteFolder + "Service1.asmx/DeleteUserInternal",
        onComplete: onDeleted,
        onFailure: onError,
        urlEncoded: false,
        headers: { "Content-type": "application/json" }
    });
    request.send(JSON.encode({ 'userInternalId': window.userId }));
}

function onDeleted(args) {
    if (args != null && args["d"] != null && args["d"])
        window.location = window.siteFolder + "CreateUserInternal.aspx?IsDeleted=true";
    else
        alert("Der skete en fejl. Kontakt venligst site administrator.");
}

function onError() {
    alert("Something bad happened!");
}

1 个答案:

答案 0 :(得分:0)

在我将javascript移出文件并使用innerText而不是innerHTML发现错误后,这已经“解决了”。

被移动后,被调用的IE8缺失函数也被“修复”了。

当然我必须传递ClientIds,我在我的aspx页面中使用它作为新方法的参数,但这对我来说很好。

出于某种原因,当我有2次确认然后发出警报时,Firefox会跳枪。