ajax aspx调用webservice,返回json
1,创建一个asp.net网站
2.创建一个student类
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
using System; using System.Collections.Generic; using System.Linq; using System.Web; /// <summary> /// Student 的摘要说明 /// </summary> public class Student { public Student() { // // TODO: 在此处添加构造函数逻辑 // } public int Id { get; set; } public String Name { get; set; } public int Age { get; set; } }
3,创建一个webservice;(添加引用-web服务)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Script.Services; using System.Web.Services; /// <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() { return "Hello World"; } [WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = false)] //ajax调用时加上这句话 public List<Student> getStudents() { //Student s = new Student() {Id= 1,Name= "sa",Age= 18 }; List<Student> list = new List<Student>() { new Student(){ Id= 1,Name= "zhangsna",Age= 19}, new Student(){Id=2,Name="lisi",Age=23}, new Student(){Id =3,Name="hehe",Age=32} }; return list; } [WebMethod] public Student getStudent() { Student s = new Student() {Id= 1,Name= "sa",Age= 18 }; return s; } }
4,创建一个html页面,ajax调用
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> <script src="../Scripts/jquery-1.8.2.min.js"></script> <script src="../Scripts/jquery-1.8.2.intellisense.js"></script> <script type="text/javascript"> $(function () { //1,请求一个字符串hello world //$.ajax({ // url: "/WebService.asmx/HelloWorld", // datatype: //}); //$.post( // "/WebService.asmx/HelloWorld", // {}, // function (data) { // alert($(data).text()); // } // ); //2,请求getStudents方法 $.ajax({ type: "POST", contentType: "application/json; charset=utf8", url: "/WebService.asmx/getStudents", dataType: "json", success: successCallback, error:errorCallback }); function successCallback(data) { for (var i = 0; i < data.d.length; i++) { alert(data.d[i].Name + data.d[i].__type); } } function errorCallback(XMLHttpRequest, status, errorThrown) { alert(status + errorThrown); } //3,$.post $.get请求,没有成功;原因contengtype无法设置 //$.post( // "/WebService.asmx/getStudents", // { "contentType": "application/json; charset=utf-8" }, // function (data, status, jqxht) { // alert(jqxht); // alert(status); // for (var i = 0; i < data.d.length; i++) { // alert(data.d[i].Name); // } // }, "script" //); }); </script> </head> <body> </body> </html>
5,创建一个aspx页面,调用
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using ServiceReference; using t74webservice; public partial class webservice_Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { t74webservice.WebServiceSoapClient ws = new t74webservice.WebServiceSoapClient(); //ws.HelloWorld() t74webservice.Student s=ws.getStudent(); Response.Write(s.Age); } }
ok,以上是今天所学内容,两种调用webservice方法;
总结:1,ajax调用:
a,方法加上特性[scriptMethod(ResponseFormat=ResponseFormat.Json,UserHttpGet=true)] //true/flase get请求
(需要引用命名空间 system.Web.Script.Services;);
b,只能使用$.ajax调用,设置contentType:"application/json;charset=utf-8";
$.post与$.get不能调用的原因是:无法设置contentType,使其请求为json格式; 待以后处理----
c,前台使用时:data.d[i].Name; 原因-->返回的json为:{“d”:[{},{}]};
function successCallback(data) { for (var i = 0; i < data.d.length; i++) { alert(data.d[i].Name + data.d[i].__type); } }
2,aspx 调用
引用web服务---》输入地址(或发现解决方案服务)
引用命名空间---new----调用方法---ok;