GVKun编程网logo

c#-使用$.ajax同时运行多个WebRequest

21

本文将介绍c#-使用$.ajax同时运行多个WebRequest的详细情况,。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于ajaxrequestVSnorm

本文将介绍c#-使用$.ajax同时运行多个WebRequest的详细情况,。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于ajax request VS normal request、ajaxrequest.js ajaxrequest 0.7最新版 使用AJAXRequest进行AJAX应用程序开发入门小技巧、AJAX中同时发送多个请求XMLHttpRequest对象处理方法、AJAX使用 以及 AJAX核心:XMLHttpRequest对象的知识。

本文目录一览:

c#-使用$.ajax同时运行多个WebRequest

c#-使用$.ajax同时运行多个WebRequest

我有2个MVC应用程序需要连接到第3个应用程序.导致问题的代码在两个MVC应用程序中都是相同的.

    public bool UpdateServerData()
    {
            //string BASE_URL = "http://";
            string BASE_URL = "http://localhost:55094";
            string url = BASE_URL + "/Home/PullLiveData";
            WebRequest wr = WebRequest.Create(url);
            wr.Credentials = CredentialCache.DefaultNetworkCredentials; // uses current windows user
            var response = (HttpWebResponse)wr.GetResponse();
            return true;
    }

    public ActionResult GetServerUpdateProgress()
    {
            //string BASE_URL = "http://";
            string BASE_URL = "http://localhost:55094";
            string url = BASE_URL + "/Home/UpdateProgress";
            WebRequest wr = WebRequest.Create(url);
            wr.Credentials = CredentialCache.DefaultNetworkCredentials; // uses current windows user

            var myobj = new UpdateAJAXProgress();
            var response = (HttpWebResponse)wr.GetResponse();
            var reader = new StreamReader(response.GetResponseStream());
            JavaScriptSerializer js = new JavaScriptSerializer();
            var objText = reader.ReadToEnd();
            myobj = (UpdateAJAXProgress)js.Deserialize(objText, typeof(UpdateAJAXProgress));
            return Json(myobj);
        }

UpdateServerData告诉localhost:55094刷新数据库中的数据.
GetServerUpdateProgress返回进度计数/总计,以便我可以显示数据库刷新的进度栏.

运行UpdateServerData的$.ajax设置为异步工作:true

然后使用setTimeouts,每隔几秒钟运行一次GetServerUpdateProgress,它返回UpdateServerData距完成的距离.

工作应用功能:

不起作用:

因此,在非工作版本中似乎正在发生的事情是,即使ajax正在调用该函数,它也没有运行GetServerUpdateProgress,在UpdateServerData完成之前,它实际上并没有开始处理其中的任何内容.您可以看到ajax同步设置正确,因为在非工作屏幕截图中都显示了加载动画.我在GetServerUpdateProgress的开头放置了一个断点,直到UpdateServerData完成处理后它才触发.

我主要担心的是,可能在webconfig或global.asax中的某些设置是不同的,这就是导致这两个应用程序运行略有不同的原因.有任何想法吗?

以下是一些相关的javascript:

function UpdateData()
{
        $("#ChartUpdateProgressWhole").show();

    $.ajax({
        type: "POST",
        async: true,
        url: '@(Url.Action("UpdateServerData", "Charts"))',
        contentType: "application/json; charset=utf-8",
        success: function (data) {
            Alert2({
                iconfilename: "tick.png",
                text: "Database Updated!",
                autohide: true,
            });
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {

        },
        complete:function (jqXHR, textStatus) {
            $("#ChartUpdateProgressWhole").hide();
            timerStop = true;
            LoadChart();
        },
    });

    if (!timerStop) {
        CheckProgress();
        }
}
function CheckProgress()
{
    if(timerStop) {
        CheckProgressAjax();
        return;
    }
    window.setTimeout(CheckProgress, 2000);
    CheckProgressAjax();
}

function CheckProgressAjax()
{
    $.ajax({
        type: "POST",
        async: false,
        url: '@(Url.Action("GetServerUpdateProgress", "Charts"))',
        contentType: "application/json; charset=utf-8",
        success: function (data) {
            var width = (data.Completed * 100)/data.Total;
            $("#ChartUpdateProgresspercent").css("width", width);
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert(XMLHttpRequest.status);
            alert(XMLHttpRequest.responseText);
        }
    });
}

解决方法:

这里有点困难,但是ASP.NET实际上将使异步请求排队,并在启用会话状态的情况下按顺序处理它们(无疑避免了处理同步问题).

我的建议是,如果可行的话,一起禁用会话状态,如果不可能的话,可以使用以下属性为每个控制器禁用会话状态:

[SessionState(SessionStateBehavior.disabled)]
public class SomeController

ajax request VS normal request

ajax request VS normal request

ajax请求(asynchronized)与普通请求(synchronized)的报文头(Header)不同:

StringreqType=request.getHeader("X-Requested-With");
if(null==reqType){//normalrequest}
elseif(reqType.equals("XMLHttpRequest")){//ajaxrequest}

1、request headers

  1. Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

  2. Accept-Encoding:gzip,deflate,sdch

  3. Accept-Language:zh-CN,zh;q=0.8,en;q=0.6

  4. Connection:keep-alive

  5. Cookie:BD_HOME=0; BD_UPN=12314353; BAIDUID=6D80EC15FB3F7D55F6CF21531B4789A2:FG=1

  6. Host:www.baidu.com

  7. Referer:http://news.baidu.com/

  8. Upgrade-Insecure-Requests:1

  9. User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/47.0.2526.106 Safari/537.36

response headers

  1. BDPAGETYPE:1

  2. BDQID:0xcc5e27ca0001088a

  3. BDUSERID:0

  4. Cache-Control:private

  5. Connection:keep-alive

  6. content-encoding:gzip

  7. Content-Type:text/html; charset=utf-8

  8. Cxy_all:baidu+1e0afc7905a9c9dcea7d6f252627f95b

  9. Date:Fri,06 May 2016 06:35:43 GMT

  10. Expires:Fri,06 May 2016 06:35:22 GMT

  11. Server:bfe/1.0.8.14

  12. Set-Cookie:PSTM=1462516543; expires=Thu,31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com

  13. Set-Cookie:__bsi=17208040824016918998_00_2870_R_N_6_0303_C02F_N_I_I_0; expires=Fri,06-May-16 06:35:48 GMT; domain=www.baidu.com; path=/

  14. Set-Cookie:H_PS_PSSID=1442_19713_18281_19805_19899_19559_19807_19843_19902_19861_17001_15263_12288; path=/; domain=.baidu.com

  15. Set-Cookie:BIDUPSID=6D80EC15FB3F7D55F6CF21531B4789A2; expires=Thu,31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com

  16. Set-Cookie:BD_HOME=0; path=/

  17. Set-Cookie:BDSVRTM=0; path=/

  18. transfer-encoding:chunked

  19. vary:Accept-Encoding

  20. X-Powered-By:HPHP

  21. X-UA-Compatible:IE=Edge,chrome=1

2、Ajax异步request headers

  1. Accept:text/javascript,application/javascript,application/ecmascript,application/x-ecmascript,*/*; q=0.01

  2. Accept-Encoding:gzip,en;q=0.6

  3. Connection:keep-alive

  4. Cookie:BAIDUID=6D80EC15FB3F7D55F6CF21531B4789A2:FG=1; PSTM=1462516543; BD_HOME=0; H_PS_PSSID=1442_19713_18281_19805_19899_19559_19807_19843_19902_19861_17001_15263_12288; __bsi=17208040824016918998_00_2870_R_N_6_0303_C02F_N_I_I_0; BIDUPSID=5081A970DD87C74CFFBADF0B28A1AF39; BD_UPN=12314353

  5. Host:www.baidu.com

  6. Referer:https://www.baidu.com/

  7. User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/47.0.2526.106 Safari/537.36

  8. X-Requested-With:XMLHttpRequest

Ajax异步response headers

  1. Cache-Control:private

  2. Connection:keep-alive

  3. Content-Length:95

  4. Content-Type:baiduApp/json; v6.27.2.14; charset=UTF-8

  5. Date:Fri,06 May 2016 06:35:45 GMT

  6. Expires:Fri,06 May 2016 07:35:45 GMT

  7. Server:bfe/1.0.8.14

  8. Set-Cookie:__bsi=16943568347195085118_00_0_I_R_1_0303_C02F_N_I_I_0; expires=Fri,06-May-16 06:35:50 GMT; domain=www.baidu.com; path=/

ajaxrequest.js ajaxrequest 0.7最新版 使用AJAXRequest进行AJAX应用程序开发入门小技巧

ajaxrequest.js ajaxrequest 0.7最新版 使用AJAXRequest进行AJAX应用程序开发入门小技巧

使用AJAXRequest进行AJAX应用程序开发(1) - 初识AJAXRequest
前言
在发布了AJAXRequest类的几个版本之后,渐渐地有许多朋友用上了它,也有许多朋友问我有没有更详细的说明和示例。不过因为时间的问题以及我能想到的示例有限,一直没有多写几个示例。考虑了一下,决定写一个关于AJAXRequest的教程,希望对使用AJAXRequest类的朋友们有所帮助。

准备

在使用AJAXRequest进行AJAX开发之前,你需要做以下准备:

准备知识:JavaScript基本语法,文档对象模型(DOM)的相关知识,以及至少掌握一种后台编程的语言(我写的例子以ASP为编程语言)。

准备工具:EditPlus或者其他文本编辑器(Dreamweaver或者Visual Web Developer也可以),以及本地测试用的Web服务器(IIS或者Apache或者NetBox或其他都可以)。

下载AJAXRequest类:你可以在http://www.xujiwei.cn/works/ajaxrequest/下载到最新版的AJAXRequest类。

要进行AJAX开发,你需要了解JS编程,这是AJAX中J的需要,以及后台编程,这是需要在服务端进行动态处理,DOM用来处理信息,将结果呈现给用户。而工具方面,文本编辑器可以选择你自己喜欢的,我比较喜欢用EditPlus。

至于测试用的Web服务器,就取决于你所用的后台编程语言了,如ASP或ASP.NET是IIS,PHP可以选择Apache等。运行ASP的另外一个选择是NetBox,不过NetBox对UTF-8支持不太好,如果不涉及非英文的输出,可以考虑选择这个轻量级的服务器软件。

至于为什么要在本地建立测试服务器而不是直接在浏览器中运行,是因为从一开始就在与服务器相近的环境中开发,可以在以后的开发过程中减少许多莫名的错误。

开始

在之后教程的例子中,我都将以JS代码与XHTML代码分开的方式来书写,其中AJAXRequest类文件ajaxrequest.js放在例子代码的同一目录下。

Hello,World!

按照惯例,以一个“Hello,World!”来开始。

helloworld.htm

程序代码:
复制代码 代码如下:

<!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> 
    <meta name="author" content="xujiwei" /> 
    <meta name="copyright" content="www.xujiwei.cn" /> 
    <meta name="description" content="hello,world" /> 
    <title>Hello,World!</title> 
    <!-- 包含AJAXRequest类文件 --> 
    <script type="text/javascript" src="ajaxrequest.js"></script> 
    <!-- 包含页面需要的JS代码 --> 
    <script type="text/javascript" src="helloworld.js"></script> 
  </head> 
  <body> 
    <!-- 一个按钮,单击调用函数showHello,显示欢迎信息 --> 
    <button onclick="showHello();">显示Hello,World!</button> 
  </body> 
</html> 

在helloworld.htm中,我们在页面上放置了一个button,用于触发showHello函数,显示从服务端获取的信息。

helloworld.js

程序代码:
复制代码 代码如下:

// 创建AJAXRequest对象,以全局变量的方式来保存这个对象,这样在整个页面应用程序中就只需要创建一次AJAXRequest类对象,而不用重复创建。 
var ajax=new AJAXRequest(); 
///////////////////////////////////////// 
// showHello 
// 描述:向服务端发送请求并显示返回信息 
// 参数:无 
// 返回:无 
///////////////////////////////////////// 
function showHello() { 
  // 使用get方法向服务端获取文件helloworld.txt的内容, 
  // 并在函数mycallback中进行处理 
  ajax.get("helloworld.txt",mycallback); 

///////////////////////////////////////// 
// mycallback 
// 描述:向服务端发送请求并显示返回信息 
// 参数:obj - XMLHttpRequest对象,保存服务端返回信息 
// 返回:无 
///////////////////////////////////////// 
function mycallback(obj) { 
  // 用alert来显示服务端返回的内容 
  // obj.responseText为helloworld.txt的内容 
  alert(obj.responseText); 


在helloworld.js中,创建了一个全局变量ajax,用于保存一个AJAXRequest对象,如果在有多个函数需要用到AJAXRequest时,就不需要重新创建AJAXRequest类实例,只需要直接使用ajax就行了。因为AJAXRequest类中具有连接池的特性,因此不会出现在网络延迟较大时后来的请求覆盖前面的请求的情况。

helloworld.txt

程序代码:
Hello,World!

helloworld.txt为客户端需要的内容,欢迎信息“Hello,World!”。

小结

在上面的教程中,我们写了一个小小的AJAX应用程序,用于在客户端用AJAXRequest类从服务端获取一个文本文件,并将它的内容显示出来。可以看出来,在上面的程序中,我们只是很简单的用了AJAXRequest的get方法,就完成了从服务器获取文件内容的过程。

在接下来的教程中,我们将继续学习AJAXRequest类的使用。

to be continued ...
您可能感兴趣的文章:
  • Node.js配合node-http-proxy解决本地开发ajax跨域问题
  • Node.js服务器环境下使用Mock.js拦截AJAX请求的教程
  • node.js+Ajax实现获取HTTP服务器返回数据
  • node.js chat程序如何实现Ajax long-polling长链接刷新模式
  • javascript ajax类AJAXRequest2007-12-31 更新
  • Node.js获取前端ajax提交的request信息

AJAX中同时发送多个请求XMLHttpRequest对象处理方法

AJAX中同时发送多个请求XMLHttpRequest对象处理方法

在ajax应用中,通常一个页面要同时发送多个请求,如果只有一个XMLHttpRequest对象,前面的请求还未完成,后面的就会把前面的覆盖掉,如果每次都创建一个新的XMLHttpRequest对象,也会造成浪费。解决的办法就是创建一个XMLHttpRequset的对象池,如果池里有空闲的对象,则使用此对象,否则将创建一个新的对象。

下面是我最近写的一个简单的类:
* XMLHttpRequest Object Pool
 *
 * @author    legend <legendsky@hotmail.com>
 * @link      http://www.ugia.cn/?p=85
 * @Copyright www.ugia.cn
 */ 

var XMLHttp = {
    
_objPool: [],

    
_getInstance: function ()
    {
        for (var 
0this._objPool.length++)
        {
            if (
this._objPool[i].readyState == || this._objPool[i].readyState == 4)
            {
                return 
this._objPool[i];
            }
        }

        
// IE5中不支持push方法
        
this._objPool[this._objPool.length] = this._createObj();

        return 
this._objPool[this._objPool.length 1];
    },

    
_createObj: function ()
    {
        if (
window.XMLHttpRequest)
        {
            var 
objXMLHttp = new XMLHttpRequest();

        }
        else
        {
            var 
MSXML = [''MSXML2.XMLHTTP.5.0''''MSXML2.XMLHTTP.4.0''''MSXML2.XMLHTTP.3.0''''MSXML2.XMLHTTP''''Microsoft.XMLHTTP''];
            for(var 
0MSXML.length++)
            {
                
try
                
{
                    var 
objXMLHttp = new ActiveXObject(MSXML[n]);
                    break;
                }
                
catch(e)
                {
                }
            }
         }          

        
// mozilla某些版本没有readyState属性
        
if (objXMLHttp.readyState == null)
        {
            
objXMLHttp.readyState 0;

            
objXMLHttp.addEventListener("load", function ()
                {
                    
objXMLHttp.readyState 4;

                    if (
typeof objXMLHttp.onreadystatechange == "function")
                    {
                        
objXMLHttp.onreadystatechange();
                    }
                },  
false);
        }

        return 
objXMLHttp;
    },

    
// 发送请求(方法[post,get], 地址, 数据, 回调函数)
    
sendReq: function (methodurldatacallback)
    {
        var 
objXMLHttp this._getInstance();

        
with(objXMLHttp)
        {
            
try
            
{
                
// 加随机数防止缓存
                
if (url.indexOf("?") > 0)
                {
                    
url += "&randnum=" Math.random();
                }
                else
                {
                    
url += "?randnum=" Math.random();
                }

                
open(methodurltrue);

                
// 设定请求编码方式
                
setRequestHeader(''Content-Type''''application/x-www-form-urlencoded; charset=UTF-8'');
                
send(data);
                
onreadystatechange = function ()
                {
                    if (
objXMLHttp.readyState == && (objXMLHttp.status == 200 || objXMLHttp.status == 304))
                    {
                        
callback(objXMLHttp);
                    }
                }
            }
            
catch(e)
            {
                
alert(e);
            }
        }
    }
}; 

示例:

<script type="text/javascript" src="xmlhttp.js"></script>
<script type="text/javascript">
function test(obj)
{
    alert(obj.statusText);
}

XMLHttp.sendReq(''GET'', ''http://www.ugia.cn/wp-data/test.htm'', '''', test);
XMLHttp.sendReq(''GET'', ''http://www.ugia.cn/wp-data/test.htm'', '''', test);
XMLHttp.sendReq(''GET'', ''http://www.ugia.cn/wp-data/test.htm'', '''', test);
XMLHttp.sendReq(''GET'', ''http://www.ugia.cn/wp-data/test.htm'', '''', test);

alert(''Pool length:'' + XMLHttp._objPool.length);
</script> 

demo 下载xmlhttp.js

您可能感兴趣的文章:
  • jQuery 利用$.ajax 时获取原生XMLHttpRequest 对象的方法
  • AJAX XMLHttpRequest对象详解
  • 解析ajax核心XMLHTTPRequest对象的创建与浏览器的兼容问题
  • 如何用ajax来创建一个XMLHttpRequest对象
  • jquery ajax学习笔记2 使用XMLHttpRequest对象的responseXML
  • AJAX客户端说明,XMLHttpRequest对象
  • AJax 学习笔记一(XMLHTTPRequest对象)
  • ajax 入门基础之 XMLHttpRequest对象总结
  • AJAX XMLHttpRequest对象创建使用详解

AJAX使用 以及 AJAX核心:XMLHttpRequest对象

AJAX使用 以及 AJAX核心:XMLHttpRequest对象

对 于Ajax技术的基础和核心,XMLHttpRequest对象应该是我们必须要了解的一个对象,Ajax实现的关键发送异步请求并接收响应执行回调都是 通过它来完成的。XMLHttpRequest最早是在Microsoft Internet Explorer 5.0以ActiveX组件中被引入的,之后各大浏览器厂商都以JavaScript内置对象的方式实现了XMLHttpRequest对象。虽然大家对 它的实现方式有所区别,但是绝大多数浏览器都提供了类似的属性和方法,在实际脚本编写方法上区别不大,并且实现得到的效果也基本相同,目前W3C正致力于 将XMLHttpRequest对象制定一个统一的标准使各个浏览器厂商遵照执行,以利于Ajax技术的推广与发展。

XMLHttpRequest提供了一个相对精简易用的API,下面我们就将简单地介绍一下它所提供的属性和方法以及怎么利用这些属性和方法完成一次Ajax的请求和响应处理。

1.readyState属性
当一个XMLHttpRequest对象被创建后,此属性标识了此对象正处于什么状态,我们可以通过对此属性的访问,来判断此次请求的状态是什么然后做出相应的操作。具体此属性的值代表的意义如下:
0:未初始化状态;此时,已经创建一个XMLHttpRequest对象,但是还没有初始化此对象的属性

1:准备发送状态;此时,已经调用了XMLHttpRequest对象的open()方法,并且已经准备好将一个XMLHttpRequest请求发送到服务端

2:已发送状态;此时,已经调用了XMLHttpRequest对象的Send()方法,但是并没有收到任何响应

3:正在接收状态;此时,已经开始接收HttpResponse响应信息但是还没有完成接收

4:完成响应状态;此时,已经完成了HttpResponse响应的接收


2.responseText属性
此属性描述的是一个HttpResponse中的全部文本内容,通过访问它,可以得到一次XMLHttpRequest得到响应回传的全部文本内容。只有当ReadyState的值为3或4时此属性才会有部分或者全部值,否则此属性只会是空字串。


3.responseXML属性
只有当 ReadyState属性为4,并且响应头部的Content-Type的MIME类型被指定为XML(text/xml或者 application/xml)时,此属性才会有值并且被解析为一个XML文档,否则此属性为Null。若是回传的XML文档结构不良或未完成响应回 传,此属性也会为Null,由此可见,此属性用来描述被XMLHttpRequest解析后的XML文档的属性。


4.status属性

用于描述服务器Http请求的状态值,通过此属性值我们可以判断服务器的响应状态,如我们通常通过判断status==200来判断服务器是否正常返回。但是注意,必须是日readyState为3或4时才能对此属性进行访问。


5.status属性
用于描述服务器Http请求的状态文本,通过此属性我们可以得到服务器响应的状态的描述文本,与status属性同样,必须在readyState为3或4时才能对此属性进行访问。


6.onreadystatechange事件
每当readyState发生改变时触发此事件,我们一般都通过此事件来触发回传处理函数。


7.open()方法
XMLHttpRequest 对象是通过open(method,uri,async,username,password)的方法来进行初始化工作的,通过调用此方法将得到一个可以 用来进行发送(send()方法)的对象。其中method参数是用来指定发送请求的HttpRequest类型,其值类型为字串,值可以为get、 post、put、delete等;uri参数是用来指定请求被发送到的服务器地址,该地址会被自动解析为绝对地址,所以在这里可以用相对地址来表示; async是一个类型为boolean类型的参数,默认情况下为true,此时表示为异步提交,如果希望发送一个同步请求可以将此值设为false;在服 务器需要验证访问用户的情况,我们可以设置username以及password两个参数。

当open()方法被调用时,XMLHttpRequest对象将会把readyState属性设为1,且初始化其他属性,如果此时一个请求正在被发送或者响应正在被接收,则前一请求的数据和内容将会丢失,请求将会被取消。

8.send()方法
当调用 open()方法后,我们就可以通过调用send()方法按照open()方法设定的参数将请求进行发送。当open()方法中async参数为true 时,在send()方法调用后立即return,否则将会中断直到请求返回。需要注意的是,send()方法必须在readyState为1时,即调用 open()方法以后调用。在调用send()方法以后到接收到响应头之前,readyState的值将被设为2,一旦开始接收到响应消息, readyState将会被设为3,直到响应接收完成,readyState的值才会被设为4。


9.abort()方法
该方法可以暂停一个HttpRequest的请求发送或是HttpResponse的接收,并且将XMLHttpRequest对象设置为初始化状态。


10.setRequestHeader()方法
该方法用于在调用open()方法后,设置HttpRequest头的信息,setRequestHeader(header,value)方法包含两个参数,前一个是header键名称,后一个是其值。


11.getResponseHeader()方法
此方法在readyState为3或4时,用于获取HttpResponse的头部信息,此外我们还可以通过getAllResponseHeaders()获取所有的HttpResponse的头部信息。

在搞清楚了XMLHttpRequest的这些基本属性方法以后,我们就可以开始编写我们的第一个Ajax程序了。我们准备通过点击一个按钮然后通过Ajax的方式到服务端取回一个Hello World!的字符串显示在界面的一个文本框里。

我们在一个配置好的站点工程里面新建一个名为AjaxTest.aspx页面。在前台页面中书写的代码:


AjaxTest.aspx:


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AjaxTest.aspx.cs" Inherits="JQueryWeb.AjaxTest" %>


<!DOCTYPE html>


<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<Meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Ajax请求数据</title>
<script src="Scripts/jquery-1.7.1.min.js"></script>


<script type="text/javascript">
//通过JavaScript请求数据
function getAjax() {
xmlHttpReq = null;
if (window.XMLHttpRequest) {
xmlHttpReq = new XMLHttpRequest();
}
else if(window.ActiveXObject){
xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
}


if(xmlHttpReq != null){
xmlHttpReq.open("get","AjaxResponse.ashx?s=1",true);
xmlHttpReq.onreadystatechange = RequestCallBack;//设置回调函数
xmlHttpReq.send(name);//因为使用get方式提交,所以可以使用null参数调用
}


function RequestCallBack(){//一旦readyState值改变,将会调用这个函数
if (xmlHttpReq.readyState == 4) {
var receivedText = xmlHttpReq.responseText;
$("#textID").val(receivedText);

}
}
}


//通过AJAX请求数据
function JQgetAjax() {
$.ajax({
type: "post",
url: "AjaxResponse.ashx",
data: "s=2",
success: function (msg) {
alert(msg);
$("#textID2").val(msg);
}
});
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input type="text" id="textID" value=""/>
<input type="button" value="JS请求ajax数据" onclick="getAjax()" />
<br />
<input type="text" id="textID2" value=""/>
<input type="button" value="JQuery请求ajax数据" onclick="JQgetAjax()" />
</div>
</form>
</body>

</html>


下面是被请求的页面, 一个一般处理程序:AjaxRsponse.ashx ,负责接收前面页面的AJAX请求,并返回数据:


AjaxRsponse.ashx :
public class AjaxResponse : IHttpHandler
{


public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
if (context.Request.QueryString["s"] == "1") //通过JavaScript发来的请求
{

context.Response.Write("Hello Shuang! You are the Best!");
context.Response.End();
}
else if (context.Request["s"] == "2") //通过JQuery 发来的请求
{
context.Response.Write("Wow! That's using JQuery!");
context.Response.End();
}
}


public bool IsReusable
{
get
{
return false;
}
}
}

我们今天的关于c#-使用$.ajax同时运行多个WebRequest的分享就到这里,谢谢您的阅读,如果想了解更多关于ajax request VS normal request、ajaxrequest.js ajaxrequest 0.7最新版 使用AJAXRequest进行AJAX应用程序开发入门小技巧、AJAX中同时发送多个请求XMLHttpRequest对象处理方法、AJAX使用 以及 AJAX核心:XMLHttpRequest对象的相关信息,可以在本站进行搜索。

本文标签:

上一篇用户交互时,AJAX调用并不总是加载(用户交互时,ajax调用并不总是加载失败)

下一篇javascript-使用FontSelector更改字体系列(js修改font内容)