JQuery 版本1.5.2
ajax 在調用webservice的時候 一定要注意
[System.ComponentModel.ToolboxItem(false)] 加上這句話
//若要允許使用 ASP.NET AJAX 從指令碼中調用此 Web 服務,請取消對下行的注釋。
[System.Web.Script.Services.ScriptService] 把這個注釋去掉
WebService.asmx
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Services; /// <summary>///WebService 的摘要說明/// </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 WebService : System.Web.Services.WebService { [WebMethod] public string HelloWorld() { return "Hello World "; } [WebMethod] public string UserName(string name) { return "我的姓名是:"+name.ToString(); } [WebMethod] public string UserPwd(string pwd) { return "我的密碼是:" + pwd.ToString(); } }
Handler.ashx
<%@ WebHandler Language="C#" Class="Handler" %>using System;using System.Web;public class Handler : IHttpHandler { public void ProcessRequest (HttpContext context) { context.Response.ContentType = "text/plain"; if (context.Request.Form["name"] != null) { context.Response.Write(UserName(context.Request.Form["name"].ToString())); } if (context.Request.Form["pwd"] != null) { context.Response.Write(UserPwd(context.Request.Form["pwd"].ToString())); } } public string UserName(string name) { return name; } public string UserPwd(string pwd) { return pwd; } public bool IsReusable { get { return false; } }}
Default.aspx
這裡要注意的是 調用webwervice的時候 data格式必須是
data: "{ pwd: '"+$.trim($("#UserPwd").val())+"' }",
就是這地方寫的不對調了好幾遍。
在調用ashx我經常不這麼寫,寫法如下。
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_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 type="text/javascript" src="js/jquery5.min.js"></script> <script type="text/javascript"> function funname() { $.ajax({ type: "POST", cache: false, url: "Handler.ashx/UserName", data: { name: $.trim($("#UserName").val()) }, success: function (data) { alert(data); } }); } function funpwd() { $.ajax({ type: "POST", cache: false, url: "Handler.ashx/UserPwd", data: { pwd: $.trim($("#UserPwd").val()) }, success: function (data) { alert(data); } }); } function funnames() { $.ajax({ type: "POST", cache: false, contentType: "application/json", url: "WebService.asmx/UserName", dataType: 'json', data: "{ name: '" + $.trim($("#UserName").val()) + "' }", success: function (data) { alert(data.d); } }); } function funpwds() { $.ajax({ type: "POST", cache: false, contentType: "application/json", url: "WebService.asmx/UserPwd", dataType: 'json', data: "{ pwd: '"+$.trim($("#UserPwd").val())+"' }", success: function (data) { alert(data.d); } }); } $(document).ready(function () { $('#btn1').click(function () { $.ajax({ type: "POST", contentType: "application/json", url: "WebService.asmx/UserPwd", data: "{}", dataType: 'json', success: function (result) { alert(result.d); } }); }); }); </script></head><body> <form id="form1" runat="server"> <div> <input type="text" id="UserName" /> <input type="text" id="UserPwd" /> <input type="button" id="btn1" value="測試" /> <input type="button" value="彈出姓名ashx" onclick="funname();" /> <input type="button" value="彈出密碼asxh" onclick="funpwd();" /> <input type="button" value="彈出姓名webservice" onclick="funnames();" /> <input type="button" value="彈出密碼webservice" onclick="funpwds();" /> </div> </form></body></html>