Javascript 使用asp.net ajax时出现函数未定义错误
我试图通过以下代码通过asp.net ajax调用web服务Javascript 使用asp.net ajax时出现函数未定义错误,javascript,c#,asp.net,ajax,asp.net-ajax,Javascript,C#,Asp.net,Ajax,Asp.net Ajax,我试图通过以下代码通过asp.net ajax调用web服务 namespace MCTS70515AJAX { public static class HR { public static int GetEmployeeCount(string department) { int count = 0; switch (department) { case "Sales": c
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;"> 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>
}
页面呈现良好,但每当我更改列表项值时,它都会显示JavaScript运行时错误:“HRService”未定义。这是为什么
抱歉发这么长的帖子 您可以尝试
PageMethods
,只需使用和[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>
这不起作用,现在显示JavaScript运行时错误:“PageMethods”未定义。是否确实要在ScriptManager中添加EnablePageMethods属性,将[WebMethod]添加到该方法并添加using行?这两件事在你的人力资源课程中并不在你的人力资源服务中这当然有效,非常感谢,但是你能告诉我在使用web服务(.asmx)时如何使用它吗@Vishesh使用WCF服务,而不是asmx。如果您有一个现有的asmx服务,您可以按照说明进行迁移
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
</asp:ScriptManager>
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); }
}