Вызов ajax webservice из OnComplete вызова ajax webservice не запускается OnComplete 2 раза - PullRequest
0 голосов
/ 07 октября 2009

У меня есть отлаженный веб-сервис .NET, который я вызываю из javascript (mootools) на своей странице содержимого ASP.NET с главной страницей, во-первых, чтобы проверить, связан ли пользователь с журналистами, во-вторых, чтобы удалить пользователя, если журналисты не связаны. 1001 *

Оба вызова веб-службы работают, но onComplete для второго не работает в IE8. Используя FF 3.5.3, я получаю ошибку «deleteUserInt не определено» в firebug.

Я прочитал, что это может быть синтаксической ошибкой, но не могу ее увидеть.

Пожалуйста, помогите.

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 голосов
/ 12 октября 2009

Это было «решено» после того, как я переместил свой javascript в файл и обнаружил ошибку, используя innerText вместо innerHTML.

Отсутствующая функция IE8, вызываемая также, сама «исправляется» после перемещения.

Конечно, я должен был передать ClientIds, которые я использовал на своей странице aspx, в качестве параметров для нового метода, но он работал нормально для меня.

По какой-то причине Firefox бросает оружие, когда у меня есть 2 подтверждения и затем предупреждение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...