在Default.aspx中通过js调用到webservice1
1、VS2008>>新建项目>>C#>>ASP.NET Web应用程序
2、添加Web服务文件“WebService1.asmx”
WebService1.asmx.cs如下:(只是去掉了ScriptService这行的注释)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
namespace WebApplication1
{
/// <summary>
/// WebService1 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
[System.Web.Script.Services.ScriptService]
public class WebService1 : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
}
}
3、Default.aspx.cs
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
<script language="javascript" type="text/javascript">
function show() {
WebApplication1.WebService1.HelloWorld(showcallback);
}
function showcallback(result) {
alert(result);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<!-- 将 工具箱>>AJAX Extensions>>ScriptManager控件 拉进来 -->
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="WebService1.asmx" InlineScript="true" />
</Services>
</asp:ScriptManager>
<div>
<button οnclick="return show()">dd</button>
</div>
</form>
</body>
</html>
这里有一个回调函数showcallback,将WebApplication1.WebService1.HelloWorld返回的结果result传入:
如果是直接写成 function show(){ alert( WebApplication1.WebService1.HelloWorld() ); } 返回的是undefined,虽然调试发现确实进入了HelloWorld函数;
网上有些示例在js上直接写WebService1.HelloWorld,没有写空间名,如果出现WebService1未定义的错误提示,可以加空间名试试;