【问题标题】:calling JSON from modal popup inside a user control in ASP.NET C#从 ASP.NET C# 中的用户控件内的模式弹出窗口调用 JSON
【发布时间】:2012-06-01 12:59:32
【问题描述】:

我有一个用户控件,它在子页面上以模式弹出窗口的形式打开。 弹出窗口中有一个文本框,我正在验证重复值,因为我已经编写了以下服务器端和客户端函数。

function Check_DuplicateMachineType() {
    var hndDuplicateMachineType = document.getElementById('<%= hndDuplicateMachineType.ClientID %>');
    var txtmachineType = document.getElementById('<%= txtmachineType.ClientID %>');
    if (txtmachineType.value.trim() != '' && txtmachineType.value.trim().toLowerCase() != hndDuplicateMachineType.value) {
        $.ajax({
            type: "POST",
            url: "wucMachineType.ascx/CheckDuplicateMachineType",
            data: '{Item: "' + $("#<%=txtmachineType.ClientID%>")[0].value + '" }',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: OnSuccessForMachineType,
            failure: function(response) {
                alert(response);
            }
        });
    }
}
function OnSuccessForMachineType(response) {        
    var txtmachineType = document.getElementById('<%= txtmachineType.ClientID %>');
    var divMachineTypes = document.getElementById('<%= divMachineTypes.ClientID %>');
    divMachineTypes.innerHTML = '';
    switch (response.d) {
        case "true":
            divMachineTypes.style.display = "inline";
            divMachineTypes.innerHTML = "Machine Type already exist";
            $("#<%=divMachineTypes.ClientID%>")[0].focus();
            $("#<%=hndIsDuplicate.ClientID%>")[0].value = '1';
            break;
        case "false":
            $("#<%=hndIsDuplicate.ClientID%>")[0].value = '0';
            break;
        case "error":
            divMachineTypes.style.display = "inline";
            divMachineTypes.innerHTML = "Error occured";
            break;
    }
}
[System.Web.Services.WebMethod]
public static string CheckDuplicateMachineType(string Item)
{
    CommonClass objCLSCommon = new CommonClass();
    DataLayer dtLayer = new DataLayer();
    try
    {
        string strQuery = "SELECT machineType from MachineType Where machineType ='" + Item + "'";
        DataTable dtCheckDuplicacy = dtLayer.Get_GeneralData(strQuery);
        if (dtCheckDuplicacy.Rows.Count > 0)
        {
            return "true";
        }
        else
        {
            return "false";
        }
    }
    catch (Exception ex)
    {
        objCLSCommon.LogErrorToFile(objCLSCommon.GetCurrentPageName(), ex.Message.Trim() + Environment.NewLine + ex.StackTrace.Trim());
        return "";
    }
}

我不知道为什么我的wucMachineType.ascx/CheckDuplicateMachineType 函数没有被调用。 错误控制台也没有错误。

【问题讨论】:

  • function Check_DuplicateMachineType 被调用了吗? $.ajax 被调用了吗?使用 Firefox 中的 Firebug 或类似的 HTTP 工具来查看任何被调用的 AJAX 请求。
  • 是的@dave我在usercontrol中使用ajax模式弹出。现在当我通过“MachineType.aspx/CheckDuplicateMachineType”时,函数调用完美。他们是“.ascx”还是“.aspx”的任何问题

标签: c# asp.net json textbox


【解决方案1】:

[Web Methods] 不会调用写在用户控件(.ascx 文件)上的内容。这是我正在做的错误。

[Web Methods] 必须写在 aspx 页面上。 (.aspx 文件)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多