jquery向服务器发送一个ajax请求后,可以返回多种类型的数据格式,包括:html,xml,json,text等。
首先说一下jquery中ajax标准的格式.
$.ajax({ url: "/CommonService.asmx/SayHello",//ajax请求地址 type: "Post",//请求方式 分为get和post dataType: "json", //要求请求返回数据类型 可分为json html text xml 等 contentType: "application/json; charset=utf-8", //发送服务器数据的编码方式 data: "{name:'Varchar32'}",//传送的数据 success: function (data) {//执行成功
var result= data.responseText; alert(result.XXX); }, error: function (data) {//执行失败 //200的响应也有可能被认定为error,responseText中没有Message部分 alert($.parseJSON(data.responseText).Message); }, complete: function (data) { //不管成功还是失败后
;//after success or error } });
下面是几种格式的例
1.html格式的数据
"<div class='comment'><h6> "+username+" :</h6><p class='para'> "+content+" </p></div>"
服务器端返回数据格式是html片段,因此不需要经过处理就可以将新的html数据插入到主页面中,这种方法虽然简便,但是重用性不强。
$.ajax({
type:"POST",
url:"Handler.ashx",
dataType:html,
data:{username:$("#name").val(),password:$("#pwd").val()},
success:function(data){
$("#result").html(data);
}
}
2.XML格式的数据
Response.Write("<?xml version=""1.0"" encoding=""utf-8""?>")
Response.Write("<comments>")
Response.Write("<comment username='"+username+"'>")
Response.Write("<content>"+content+"</content>")
Response.Write("</comment>")
Response.Write("</comments>")
Response.End();
由于服务器端返回的数据格式是XML文档,因此需要对文档的数据进行处理。
$.ajax({
type:"POST",
url:"Handler.ashx",
dataType:xml,
data:{username:$("#name").val(),password:$("#pwd").val()},
success:function(data){
var username = $(data).find("comment").attr("username");
var content = $(data).find("comment content").text();
var txtHtml = "<div class='comment'><h6>"+ username+":</h6><p class='para'>"+content+"</p></div>";
$("#result").html(txtHtml)
}
}
3.JSON格式的数据
Response.Write("{ username : '"+username+"' , content : '"+content+"'}")
由于服务器端返回的数据格式是JSON文档,因此也需要对文档的数据进行处理,但是JSON文档比较XML文档更容易解析。
$.ajax({
type:"POST",
url:"Handler.ashx",
dataType:json,
data:{username:$("#name").val(),password:$("#pwd").val()},
success:function(data){
可以加上.....
var username = data.username;
var content = data.content;
var txtHtml = "<div class='comment'><h6>"+ username+":</h6><p class='para'>"+content+"</p></div>";
$("#result").html(txtHtml)
}
}
egg:实验
<script type="text/javascript">
$(function () {
$.ajax({
type: "post",
url: "abc.aspx",
data: "{}",
contentType: "text/plain; charset=utf-8",
dataType: "text",
success: function (data) {
alert(data);
},
error: function (msg) {
alert(msg);
}
});
});
</script>
然后在aspx对应的页面.
Response.Write("dongya");
Response.End();
然后运行就会执行.dongya那个弹框.
下面是四个例子 实验过
<script type="text/javascript">
$(function () {
$.ajax({
type: "post", //以post方式传递
url: "a.ashx", //请求地址
// data: {}, //传递参数 这里不进行传递
// contentType: "text/plain; charset=utf-8",
dataType: "json", //数据类型
success: function (data) {
alert(data.a); //返回的是json对象,可以直接进行操作读取
},
error: function (msg) {
alert(1);
}
});//对应第一个一般处理程序
$(function () {
$.post('b.ashx', function (data, status) {
if (status == 'success') {//当执行成功
alert(data.a);
}
else { alert("shibai"); }
}, 'json');//对应第二个一般处理程序
});
$(function () {
$.ajax(
{
url: "c.ashx",
type: "post",
dateType: "text",
success: function (data) {
alert(data); //先看看返回的类型是不是json字符串
// var i = eval("(" + data + ")");//把json字符串转换为json对象
var i = JSON.parse(data); //把json字符串转换为json对象
alert(i);//json对象是object类型
alert(i.a);
},
error: function () {
}
}
);
}); //对应第三个一般处理程序
$(function () {
$.ajax(
{
url: "d.ashx",
type: "post",
dateType: "text",
success: function (data) {
alert(data);//返回字符串类型
},
error: function () {
}
});
});//对应第四个一般处理程序
</script>
第一个一般处理程序 对应第一个js
<%@ WebHandler Language="C#" Class="a" %>
using System;
using System.Web;
using System.Runtime.Serialization;
public class a : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "json";
string json = "{\"a\":\"123\"}"; // \"雙引號 轉義符 通過轉義符這樣就變成了合格的ojson字符串
//string str = "{name:cxh,sex:man}";//這樣是平常罛的字符串
//var str1 = {"name":"cxh","sex":"man" };//這樣是正規的ojson對象
//var str2='{"name":"cxh","sex":"man"}';// 這樣是正規的ojson字符串
context.Response.Write(json.ToString());
}
public bool IsReusable {
get {
return false;
}
}
}
東亞 09:31:16 第二个一般处理程序 对应第二个js
<%@ WebHandler Language="C#" Class="b" %>
using System;
using System.Web;
public class b : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "json";
string json = "{\"a\":\"123\"}";
context.Response.Write(json.ToString());
}
public bool IsReusable {
get {
return false;
}
}
}
東亞 09:31:23 第三个一般处理程序 对应第三个js
<%@ WebHandler Language="C#" Class="c" %>
using System;
using System.Web;
using System.Web.Script.Serialization;
using System.Runtime.Serialization.Json;
public class c : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
string b = "{\"a\":\"123\"}";//這是合格的ojosn字符串
context.Response.Write(b.ToString());
}
public bool IsReusable {
get {
return false;
}
}
}
東亞 09:31:30 第四个一般处理程序 对应第四个js
<%@ WebHandler Language="C#" Class="d" %>
using System;
using System.Web;
public class d : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
context.Response.Write("Hello World");
}
public bool IsReusable {
get {
return false;
}
}
}