0

对于一般的 AJAX 和 javascript,我相当垃圾。

我有一个 WebMethod:

[System.Web.Services.WebMethod] 公共静态字符串 DumpClients() {}

我在 js 文件中有这段代码:

mainScreen.DumpClients = function() {
    $('#runclientdumpbtn').attr("disabled", "true");
    mainScreen.clientDiv.innerHTML = "";
    $("#loadingimageclientdump").show();
    PageMethods.DumpClients(mainScreen.DumpClientsCallback, mainScreen.DumpClientsFailed);
}
mainScreen.DumpClientsCallback = function(result) {
    if (result) {
        $("#loadingimageclientdump").hide();
        mainScreen.clientDiv.innerHTML = result;
        $('#runclientdumpbtn').removeAttr("disabled");
    }
};
mainScreen.DumpClientsFailed = function(error, userContext, methodName) {
    if (error) {
        // TODO: add your error handling
        $("#loadingimageclientdump").hide();
        mainScreen.clientDiv.innerHTML = error.get_message();
        $('#runclientdumpbtn').removeAttr("disabled");
    }
};

Sys.Application.add_load(applicationLoadHandler);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(beginRequestHandler);

这工作得很好,(我承认我根本不完全理解这一点),直到我需要从页面访问下拉列表。由于它是一个静态方法,我无法直接获取它,所以我想我可以通过 webmethod 将值传回。

小问题是我不知道怎么做。我一直在谷歌上搜索它,但没有快速到达任何地方。我正在阅读一本 JQuery 书籍并了解更多基础知识,但目前这超出了我的范围。

我感谢任何和所有的帮助和建议,很抱歉我可能问了一个愚蠢的问题。

4

1 回答 1

1

所以我决定我完全走错了路,并寻找一种更好的方法来调用该方法并找到了这个解决方案:

  $("#runclientdumpbtn").click(function() {
        var selectedreporttype = $("#<%= dropdownpageID %>").val();

        $.ajax({
            type: "POST",
            url: "default.aspx/ExtractContacts",
            data: "{outputtype:'" + selectedreporttype + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: OnContactSuccess,
            failure: OnContactFailure,
            error: OnContactFailure
        });

        startContact();
    });




[WebMethod()]
public static string ExtractContacts(string outputtype)
{
}

希望这对其他人有帮助。

于 2009-11-21T23:07:18.577 回答