1、webservice端
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Services;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
/// <summary>
///WebService 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
[System.Web.Script.Services.ScriptService]
public class WebService : System.Web.Services.WebService {
public WebService () {
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
[WebMethod]
public string HelloWorld(string userName) {
return "Hello World"+userName;
}
}
红色部分在vs2010中编译会报错,找不到“System.Web.Script”引用。
解决办法:经在网上查阅属于vs2010的一个bug,当编译框架选择为.Net3.5 Framework时,程序却在物理路径C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0去找System.Web.Extentions.dll这个动态库,所以此时应该将物理路径C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5中的动态库System.Web.Extentions.dll拷贝到路径C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0下面。
2、客户端
<script src="js/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
$("#Button1").click(function () {
try {
$.ajax({
type: "POST", //访问WebService使用post方式请求
contentType: "application/json;utf-8", //WebService会返回json类型
url: "http://localhost:8321/WebService.asmx/HelloWorld", //调用WebService的地址和方法名称组合
data: "{userName:'Jodie'}", //这里是要传递的参数,格式为data:"{paraName:paraValue}"
dataType: "json",
success: function (result) {
$("#result").html(result.d);
alert(result.d);
}
})
}
catch (ex) {
alert(ex);
}
})
})
</script>
完成客户端与服务器端的编写后调试发现,在IE中正常,但是在FireFox中死活出不来,这时郁闷了……百思不得其解,最终发现是跨域问题
解决办法:将webservice于客户端发布在同一个根目录下,如图所示