当前位置: 首页 > 面试题库 >

使用asp.net Ajax时函数未定义错误

封鸿雪
2023-03-14
问题内容

我正在尝试通过以下代码通过asp.net ajax调用Web服务

namespace MCTS70515AJAX
{
public static class HR
{
    public static int GetEmployeeCount(string department)
    {
        int count = 0;
        switch (department)
        {
            case "Sales":
                count = 10;
                break;
            case "Engineering":
                count = 28;
                break;
            case "Marketing":
                count = 44;
                break;
            case "HR":
                count = 7;
                break;
            default:
                break;
        }
        return count;
    }
}

这是我正在渲染的aspx页面

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AJAX2.aspx.cs"

Inherits="MCTS70515AJAX.AJAX2" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">

    <title></title>

</head>
<body>

    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server">
            <Services>
                <asp:ServiceReference Path="HRSer.asmx" />
            </Services>
            <Scripts>

            </Scripts>
        </asp:ScriptManager>


        <div>
            <select id="Departments" size="5">
                <option value="Engineering">Engineering</option>
                <option value="HR">Human Resources</option>
                <option value="Sales">Sales</option>
                <option value="Marketing">Marketing</option>

            </select>

        </div>
        <br />
        <div>
            <span id="employeeResults"></span>
            <span id="loading" style="display: none;">&nbsp;&nbsp;Loading ...

            </span>

        </div>

    </form>
     <script type="text/javascript">

    var departments = null;
    Sys.Application.add_load(page_load);
    Sys.Application.add_unload(page_unload);
    function page_load(sender, e) {
        departments = $get("Departments");
        $addHandler(departments, "change", departments_onchange);
    }
    function page_unload(sender, e) {
        $removeHandler(departments, "change", departments_onchange);
    }
    function departments_onchange(sender, e) {
        $get("employeeResults").innerHTML = ""; $get("loading").style.display = "block";
        var selectedValue = departments.value;
        HRService.Getcount(selectedValue, onSuccess);
    }
    function onSuccess(result) {
        $get("loading").style.display = "none";
        $get("employeeResults").innerHTML = "Employee count: " + result;
    }


                </script>

</body>
</html>

这是我正在呼叫的网络服务

namespace MCTS70515AJAX
{

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class HRService : System.Web.Services.WebService
{
    [ScriptMethod]
    [WebMethod]
    public int Getcount(string department)
    {
        return HR.GetEmployeeCount(department);
    }
}

页面呈现得很好,但是每当我更改列表项的值时,它就会显示JavaScript运行时错误:’HRService’未定义。为什么是这样。

抱歉这么长的帖子....


问题答案:

您可以尝试PageMethods,只需添加using[WebMethod]

using System.Web.Services;

public static class HR
    {
        [WebMethod]
        public static int GetEmployeeCount(string department)
        {
            int count = 0;
            ...
            return count;
        }
    }

在aspx中,像这样修改您的scriptManager

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

然后您可以通过这种方式在JS中调用方法

function myJS_method() {
    var departments = $get("Departments"); // your string value
    PageMethods.GetEmployeeCount(departments , onSucess, onError);
    function onSucess(result) {
        // your code when it is OK
        // result is the return value of your C# method
    }
    function onError(result) { alert('Error' + result); }
}


 类似资料:
  • 我一直得到这个错误: 致命错误:未捕获错误:调用未定义的函数mysqli_connect()在C:\Apache24\htdocs\asd.php: 2堆栈跟踪:#0{main}抛出在C:\Apache24\htdocs\asd.php在第2行 在任何php文件中运行任何mysqli cmd时,例如: 我已经在php中启用了扩展。ini文件,我一直在努力解决这个问题,但我就是做不到。任何帮助都将不

  • 我知道这是一个经常被问到的问题,但是我已经尝试了我找到的所有方法,但是仍然不起作用。 我在Windows 7(64位)和PHP 5.4.3上使用WAMP 2.2。当我在localhost中调用curl_init()时,我有这个错误消息: 我所做的: 检查WAMP的php扩展中的php\u curl 多次重新启动WAMP 移除;在extension=php\u curl之前。dll在我的两个php中

  • 问题内容: 我试图在python中定义一个基本函数,但是当我运行一个简单的测试程序时,总是会收到以下错误; 这是我用于此功能的代码; 更新:我打开了名为pyth.py的脚本,然后在给出错误时在解释器中输入pyth_test(1,2)。 谢谢您的帮助。(对于这个基本问题,我深表歉意,我以前从未编程过,并且正在尝试将Python作为一种业余爱好来学习) 问题答案: 是的,但是在哪个文件中声明了定义?它

  • 有人能告诉我,当我尝试将旧的sql切换到SQLI时,为什么这不起作用吗: 致: 它一直给我一个错误:“致命错误:调用未定义的函数mysqli_result()”

  • 问题内容: 当我想在浏览器上运行phpMyAdmin时,向我显示此错误: 我在PHP 5.5.7中使用fedora 17。 有解决问题的主意吗? 问题答案: 检查您的会话目录是否可被Web服务器进程写入。 最好的方法是创建自己的phpinfo文件。在任何可通过网络访问的文件夹中,创建一个包含以下内容的文件(您可以将其命名为test.php或phpinfo.php或其他名称): 在浏览器(或类似浏览

  • 好吧,我知道我试图混合mysql和MySQLI....