javascript - 从代码隐藏和代码隐藏中的脚本调用函数内部调用 JavaScript(PageMethods 未定义)

标签 javascript c# html asp.net

当用户从下拉列表列表中选择数据时,我需要从代码隐藏调用确认消息框,并且当所选数据为1时,例如,将向用户显示一个确认框以确认其操作 所以我在调用此 JavaScript 方法的背后代码中执行了以下操作:

if (dropdownlist1.SelectedValue == 1)
{
    ScriptManager.RegisterStartupScript(this, this.GetType(), "CallConfirmBox", "CallConfirmBox();", true);
}

脚本函数:

<script type="text/javascript">
function CallConfirmBox() {
    if (confirm("هل تريد ان تفصل الباليت؟")) {
                   alert("سيتم فصل الباليت!");
        PageMethods.getdata(onSuccess, onError); 
        function onSuccess() {
            alert(data);
        }

        function onError() {
            alert(errorMessage);
        }            
         }
    } else {
        //CANCEL – Do your stuff or call any callback method here..
        alert("done!");
    }
}

我在 HTML 代码的开头添加了以下行:

    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"> </asp:ScriptManager>

这是从脚本调用的函数背后的代码:

    [System.Web.Services.WebMethod()]
    [System.Web.Script.Services.ScriptMethod()]
    public static void getdata()
    {

        int nRowsCheck = cMDP.Update_Segregation_PalletPart(nPalletNo);
        if (nRowsCheck != 0)
        {
            nRowsCheck = 0;
            nRowsCheck = cMDP.Update_Segregation_Pallet(nPalletNo, nUserID);
            if (nRowsCheck != 0)
            {
                nRowsCheck = 0;

                nRowsCheck = cMDP.Delete_Segregation_PalletPart_Delete(nPalletNo);
                if (nRowsCheck != 0)
                {
                    nRowsCheck = 0;
                    nRowsCheck = cMDP.Delete_Segregation_Pallet_Delete(nPalletNo);
                }
            }
        }
}

但是我遇到了以下错误:

Page Methods is undefined when run the script !!

请帮忙,因为我需要一些支持

最佳答案

首先,您必须在 JavaScript 中的 else 之前删除一个 }

更改隐藏代码:

if (dropdownlist1.SelectedValue == "1")

对于主要问题:页面方法未定义:

从您的评论看来,您正在使用用户控件(ascx)。 页面方法不能在用户控件中使用。请引用以下问题:

最简单的解决方案是使用 aspx WebForm 而不是 ascx 用户控件。这就是我已经测试和工作过的。

或者您可以使用 WebService,如以下问题中所指定:

但是示例的链接不再有效。

或者您可以尝试使用此项目,尝试将 ASP.NET AJAX 页面方法引入 UserControls:

关于javascript - 从代码隐藏和代码隐藏中的脚本调用函数内部调用 JavaScript(PageMethods 未定义),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41827113/

相关文章:

c# - stringbuilder 保存到 CSV 文件时内存不足

c# - Path.Combine 省略其中一个参数的可能原因

php - 当显示未找到服务器错误页面时,如何刷新页面/框架?

html - 如何使标题图像在全屏时占 50%,然后在某一点堆叠并开始跨越全宽?

javascript - 页面上具有不同(线性和对数)轴的多个 d3 图表

javascript - 将幻灯片中的每个单词一一淡入淡出

javascript - 我想将 html id 绑定(bind)到指令中

c# - 为什么 string Method(Object object) 可能与 Func<Object, string> 委托(delegate)类型不匹配?

javascript - 根据选定的单选按钮添加/删除下拉选项

javascript - 在图像加载时在 JQuery 中执行一些操作(this)