<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="RequestPage.aspx.cs" Inherits="JQueryAjaxDemo.apsxDemo.RequestPage" %>
<!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>JQuery Ajax 请求Aspx页面的例子----请求页</title>
<script src="../Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<!-- 直接请求页面的方法
<script type="text/javascript">
// 直接请求页面的方式,其实请求本身页面和其他页面都是一样的,无非就是地址不一样,O(∩_∩)O~。
$(function () {
/* 请求当前自己页面
$.get(
"RequestPage.aspx",
{ "token": "ajax" },
function (data) {
$("#dataShow").text(data);
}
);*/
// 请求其他页面
$.ajax({
type: "get",
url: "ResponsePage.aspx",
data: { token: "ajax" },
// 直接时候用post请求一个页面,jquery中指明如果使用这种形式,必须是key/value的形式,
// jquery自动设置contentType='application/x-www-form-urlencode',转换为form的值对,
// 而现在下面的data只是一个字符串,是无法转换为准确的form形式的。
// data: "{\"token\":\"ajax\"}",
// data: "token=ajax",
// contentType:"application/xml;charset=utf-8;",// 这句不能写,否则返回整个页面的html内容。
// contentType:"application/x-www-form-urlencode;charset=utf-8",// 这句话,jquery会自动添加。
// contentType:"application/json", // 如果使用json格式,因为使用post整个页面,所以无法得到form的值。
dataType: "json",
success: function (data) {
// $("#dataShow").text(data);
alert(data);
},
error: function (d, c,e) {
var dd = d;
}
});
})
</script>
-->
<!-- 请求页面方法的方法
<script type="text/javascript">
$(function () {
/* 请求页面方法的时候,get和post不是很靠谱,还是使用ajax吧,\(^o^)/~。
$.get(
"RequestPage.aspx/RequestedMethod",
function (data) {
alert(data);
}
);*/
$.ajax({
type: "get",
url: "ResponsePage.aspx/RequestedMethod",
contentType: "application/json;charset=utf-8",// 这句可不要忘了。
dataType: "json",
success: function (res) {
$("#dataShow").text("success:" + res.d); // 注意有个d,至于为什么通过chrome看响应吧,O(∩_∩)O。
},
error: function (xmlReq, err, c) {
$("#dataShow").text("error:" + err);
}
});
})
</script>
-->
<!-- 请求页面方法的方法,带参数-->
<script type="text/javascript">
$(function () {
$.ajax({
type: "Post",
url: "ResponsePage.aspx/RequestMethod1",
data:"{'msg':'hello'}",
contentType: "application/json;charset=utf-8",// 这句可不要忘了。
dataType: "json",
success: function (res) {
$("#dataShow").text("success:" + res.d); // 注意有个d,至于为什么通过chrome看响应吧,O(∩_∩)O。
},
error: function (xmlReq, err, c) {
$("#dataShow").text("error:" + err);
}
});
})
</script>
</head>
<body>
<form id="form1" runat="server">
<div id="dataShow">
</div>
</form>
</body>
</html>
上面为客户端------------------------------------------------------------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;
using System.Web.Script.Services;
using System.IO;
namespace JQueryAjaxDemo.apsxDemo
{
public partial class ResponsePage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
StreamReader reader = new StreamReader(Request.InputStream);
string dd = reader.ReadToEnd();
if ((Request["token"] ?? "") == "ajax")
{
// 下面这些内从可以放在一个方法里,然后通过“token”标记去判断执行哪个方法。
// 如果要是返回的响应为xml,则必须这样设置
//Response.ContentType = "application/xml";
// 如果要是返回的响应为xml,返回的字符串必须是可以被解析的xml文档格式。
//Response.Write("<my>123</my>");
// 如果要是返回的响应为json,需要这样设置,但是不是必须的,也可以不设置。
//Response.ContentType = "application/Json";
// 如果要是返回的响应为json,返回的字符串必须是可以被解析的json文档格式。
// Response.Write("[123]");
// 这个是直接返回字符串的情况。
// Response.Write("我是直接请求aspx页面返回的文字!我是ResponsePage.");
Response.Write("[123]");
Response.End();
}
}
}
// 需要被Ajax请求的后台方法
[WebMethod]
[ScriptMethod(UseHttpGet = true)]// 如果要使用POST方式请求,去掉这个标记
public static string RequestedMethod() // 方法一定要是静态的。
{
return "我是被请求的后台方法RequestedMethod";
// return "<my>123</my>";
}
[WebMethod]
public static string RequestMethod1(string msg)
{
return msg+"343";
}
}
}
上面为服务器端