Ajax请求格式和返回类型汇总
原⽂出处:
常规请求基本格式
1 [WebMethod]
2 public string SayHello(string name)
3 {
4 return "Hello " + name;
5 }
1 $.ajax({
2 url: "/CommonService.asmx/SayHello",
3 type: "Post",
4 dataType: "json",
5 contentType: "application/json; charset=utf-8",
6 data: "{name:'Varchar32'}",
7 success: function (data) {
8 alert(data.d);
9 },
10 error: function (data) {
11 //200的响应也有可能被认定为error,responseText中没有Message部分
12 alert($.sponseText).Message);
13 },
14 complete: function (data) {
15 ;//after success or error
16 }
17 });
其中⼏个参数的含义
type:请求⽅式,⼜称Method
dataType:预期返回类型(The type of data that you're expecting back from the server)
contentType:发送到服务器的数据的编码类型(When sending data to the server, use this content type) data:发送到服务器的数据
返回各种类型的数据
1、返回string
1 [WebMethod]
2 public string HelloWorld()
3 {
4 return "Hello World";
5 }
1 //js的其他部分略
2 success: function (data) {
3 $(".ajaxresult div:eq(0)").html("返回数据的类型为:" + typeof(data.d));
4 $(".ajaxresult div:eq(1)").html("内容为:" + data.d);
5 }
浏览器看到的结果
另附上采⽤text格式调⽤的代码
1 $.ajax({
2 url: "/CommonService.asmx/HelloWorld",
3 type: "Post",
4 dataType: "text",
5 data: {},
6 success: function (data) {
7 $(".ajaxresult div:eq(0)").html("返回数据的类型为:" + typeof (data));
8 $(".ajaxresult div:eq(1)").html("内容为:" + data);
9 }
10 });
2、返回int
1 [WebMethod]
2 public int HelloWorld()
3 {
4 return 1;
5 }
js部分略
浏览器看到的结果
3、返回数组(List或Array)
1 [WebMethod]
2 public List<string> HelloWorld()
3 {
4 return new List<string>() { "Frozen_Zhang","Varchar32"};
5 }
1 //js的其他部分略
2 success: function (data) {
3 $(".ajaxresult div:eq(0)").html("返回数据的类型为:" + typeof (data.d));
4 var str = "";
5 $.each(data.d, function (index, val) {
6 str += "第" + index + "项:" + val + " ;";
7 });
8 str = str.substring(0,str.length - 1);
9 $(".ajaxresult div:eq(1)").html("内容为:" + str);
10 }
浏览器看到的结果
4、返回⾃定义类
1 public class Person
2 {
3 public string Name { get; set; }
4 public bool Gender { get; set; }
5 }
1 [WebMethod]
2 public Person HelloWorld()
3 {
4 return new Person() {
5 Name = "Varchar32",
6 Gender = true
7 };
8 }
1 //js的其他部分略
2 success: function (data) {
3 $(".ajaxresult div:eq(0)").html("返回数据的类型为:" + typeof (data.d));
4 $(".ajaxresult div:eq(1)").html("内容为:姓名" + data.d.Name + ",性别" + (data.d.Gender ? "男" : "⼥"));
5 }
浏览器看到的结果
5、返回⾃定义类的集合
1 [WebMethod]
2 public List<Person> HelloWorld()
3 {
4 return new List<Person>(){
5 new Person() {
6 Name = "Varchar32",
7 Gender = true
8 },
9 new Person(){
10 Name = "Frozen_Zhang",
11 Gender = true
12 }
13 };
14 }
1 //js的其他部分略
2 success: function (data) {
3 $(".ajaxresult div:eq(0)").html("返回数据的类型为:" + typeof (data.d));
4 var str = "";
5 $.each(data.d, function (index, val) {
6 str += "第" + index + "项:" + "姓名" + val.Name + ",性别" + (val.Gender ? "男" : "⼥") + " ;";
7 });
8 str = str.substring(0, str.length - 1);
9 $(".ajaxresult div:eq(1)").html("内容为:" + str);
10 }
浏览器看到的结果
6、返回Dictionary
1 [WebMethod]
2 public Dictionary<string,string> HelloWorld()
3 {
4 //键必须是string类型
5 var dict = new Dictionary<string, string>();
6 dict.Add("1","Varchar32");
7 dict.Add("2", "Frozen_Zhang");
8 return dict;
9 }
1 //js的其他部分略
2 success: function (data) {
3 $(".ajaxresult div:eq(0)").html("返回数据的类型为:" + typeof (data.d));
4 var str = "";
5 $.each(data.d, function (key, val) {
6 str += "键:" + key + ",值:" + val + " ;";
7 });
8 str = str.substring(0, str.length - 1);
9 $(".ajaxresult div:eq(1)").html("内容为:" + str);
10 }
浏览器看到的结果
7、返回DataSet
1 [WebMethod]
2 public DataSet HelloWorld()write的返回值
3 {
4 var ds = new DataSet();
5 var dt = new DataTable();
6 dt.Columns.Add("Name");
7 dt.Columns.Add("Gender");
8 dt.Rows.Add("Varchar32", true);
9 dt.Rows.Add("Frozen_Zhang", true);
10 ds.Tables.Add(dt);
11 return ds;
12 }
1 //此处采⽤xml格式调⽤
$.ajax({
2 url: "/CommonService.asmx/HelloWorld",
3 type: "Post",
4 dataType: "xml",
7 data: {},
9 success: function (data) {
10 var str = "";
11 $.each($.find("Table1", data), function () {
12 str += $(this).find("Name").text() + (Boolean($(this).find("Gender").text()) ? "男" : "⼥") + ";";
13 });
14
15 str = str.substring(0, str.length - 1);
16 $(".ajaxresult div:eq(1)").html("内容为:" + str);
17 }
18 });
浏览器看到的结果
*、⽤xml格式调⽤⽐较简单,⽤json格式要引⽤Microsoft.Web.Preview.dll库,还要在fig中添加⼀⼤串,⽐较⿇烦
跨域请求
1、原理
javascript的同源策略(Same-Origin Policy):js不能访问不在同⼀域下的页⾯内容,因此XmlHttpRequest只能请求在同⼀源下的资源 但script标签的src属性不受同源策略的影响
1 <script type="text/javascript" id="script1">
2 funccallback = function (data) {
3 alert(data);
4 }
5 </script>
6 <script type="text/javascript" id="script2">
7 funccallback("Varchar32");
8 </script>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论