js 兼容多浏览器的Ajax请求代码示例

 代码如下 复制代码

var ajax = function() {};
ajax.prototype = {
    request: function(method, url, callback, postVars) {
        var xhr = this.createXhrObject();
        xhr.onreadystatechange = function() {
            if (xhr.readyState !== 4) return;
            (xhr.status === 200) ?
                callback.success(xhr.responseText, xhr.responseXML) :
                callback.failure(xhr,status);
        };
        if (method !== "POST") {
            url += "?" + JSONStringify(postVars);
            postVars = null;
        }
        xhr.open(method, url, true);
        xhr.send(postVars);
    },
    createXhrObject: function() {
        var methods = [
            function() { return new XMLHttpRequest(); },
            function() { return new ActiveXObject("Msxml2.XMLHTTP"); },
            function() { return new ActiveXObject("Microsoft.XMLHTTP"); }
        ],
        i = 0,
        len = methods.length;

        for (; i < len; i++) {
            try {
                methods[i];
            } catch(e) {
                continue;
            }

            this.createXhrObject = methods[i];
            return methods[i];
        }

        throw new Error("ajax created failure");
    },
    JSONStringify: function(obj) {
        return JSON.stringify(obj).replace(/"|{|}/g, "")
                    .replace(/b:b/g, "=")
                    .replace(/b,b/g, "&");
    }
};

jQuery $.ajax概述

出现JQuery后,使AJAX变得更加容易实现。

JQuery中,AJAX的高层实现主要有$.get(),$.post()等,下面详细介绍一下$.ajax()的使用方法

1、请求页面AJAX.aspx

js代码如下:

 代码如下 复制代码

   <script type="text/javascript">
        function Text_ajax()
        {
           $.ajax(
           {
              type:"GET",//通常会用到两种:GET,POST。默认是:GET
              url:"ResponseText.aspx",//(默认: 当前页地址) 发送请求的地址
              dataType:"html",//预期服务器返回的数据类型。
              beforeSend:beforeSend, //发送请求
              success:callback, //请求成功
              error:error,//请求出错
              complete:complete//请求完成
             
           });
        }
        function error(XMLHttpRequest, textStatus, errorThrown)
        {
              // 通常情况下textStatus和errorThown只有其中一个有值
              $("#showResult").append("<div>请求出错啦!</div>");
        }
        function complete(XMLHttpRequest, textStatus)
        { 
              $("#showResult").append("<div>请求完成</div>");
        }
        function beforeSend(XMLHttpRequest)
        {
              $("#showResult").append("<div>发送请求…..<div>");
              
        }
        function callback(msg)
        {
              $("#showResult").append("<div>请求成功,回传数:"+msg+"<div>");         
        }
       
    </script>

html代码如下:

 代码如下 复制代码

  <input value="Text_ajax函数" type="button" onclick="Text_ajax()"/>
    <div id="showResult">   
</div>

响应页面JQueryAJAX.aspx

后台代码:

 代码如下 复制代码

  protected void Page_Load(object sender, EventArgs e)
    {
        Response.Write("呵呵!测试成功啦!");
    }

jQuery Ajax中文乱码问题?

:ajax配置contentType属性,加上charset=UTF-8

在ajax方法中加入以下参数

contentType: “application/x-www-form-urlencoded; charset=UTF-8″使用其它js框架或者xhr都是差不多,设置header中contentType即可,

这里关键是charset=UTF-8,如果没有这个,是不行的,默认jQuery里的contentType是没有的.

方法二在action里不需要进行decode,所以推荐使用此方法

时间: 2024-09-16 19:01:46

js 兼容多浏览器的Ajax请求代码示例的相关文章

js 兼容多浏览器的回车和鼠标焦点事件代码(IE6/7/8,firefox,chrome

js 兼容多浏览器的回车和鼠标焦点事件代码(IE6/7/8,firefox,chrome 文本框: 复制代码 代码如下:<input type="text" onkeydown="keydownsearch(event)" /> js代码: 复制代码 代码如下: function keydownsearch(evt) { evt = (evt) ? evt : ((window.event) ? window.event : "")

js兼容多浏览器添加收藏代码

js兼容多浏览器添加收藏代码 */ function addfavor(a){  var url = window.location;  var title = document.title;  var ua = navigator.useragent.tolowercase();  if(ua.indexof("msie 8")>-1){   external.addtofavoritesbar(url,title,'aa');//ie8   }else{    try {  

ajax请求后台下载zip压缩文件问题,后台返回的是流前台不提示下载。附上ajax请求代码合后台代码

问题描述 ajax请求后台下载zip压缩文件问题,后台返回的是流前台不提示下载.附上ajax请求代码合后台代码 前台: $.ajax({ type:"POST", url:"app/downloadProduct", data:{nid:nid,name:name}, dataType:"text", success:function(data){ console.log(data); if(data!=null){ alert("ur

js 兼容多浏览器的显示隐藏层

js 兼容多浏览器的显示隐藏层 <html xmlns="http://www.111cn.net/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>js 兼容多浏览器的显示隐藏层</title> <script language=&qu

解决浏览器记住ajax请求并能前进和后退问题

在我们浏览不同网页的时候,我们可以通过浏览器的前进.后退键来去到我们前后访问过的页面.这都有一个共同点,就是 浏览器地址栏的地址改变了.浏览器自身维护了一个记录用户访问页面历史的栈,栈中记录了用户访问不同页面的先后顺序. 但是在开发中,我们经常会用到ajax技术去提升网页的用户体验.但是ajax本身并不改变浏览器地址栏中的url,是在同一个网页内部操作的,这时,浏览器并不会记录ajax请求的记录.在这种情况下,用户在一个页面触发的5次ajax请求后,点了后 退按钮,浏览器不会再次请求之前的aja

兼容所有浏览器的css3圆角代码

但令人头疼的是CSS3的很多属性并不被所有的浏览器支持.本人向来喜欢使用圆角矩形作为容器,经过寻找和探索终于找到了实现让圆角兼容所有浏览器的方法. 这个方法是用CSS+JS来实现的. 在需要实现圆角的页面中引入CurvyCorners(一个JS圆角库,它采用的全部是CSS3原生属性),并使用addEvent函数:    代码如下 复制代码     <script type="text/javascript" src="curvycorners.js">&

如何将jqery ajax请求代码独立出来?

问题描述 jsonResult = getDepInfoJson(Department.id); //此处调用独立的 jquery post 请求function getDepInfoJson(depId){var ret;$.post(urlHead + 'getDepInfo.action', {"departmentId":depId}, function(data, status){if("success"==status){ret = data;//ale

js 兼容多浏览器的回车和鼠标焦点事件代码(IE6/7/8,firefox,chrome)_javascript技巧

文本框: 复制代码 代码如下: <input type="text" onkeydown="keydownsearch(event)" /> js代码: 复制代码 代码如下: function keydownsearch(evt) { evt = (evt) ? evt : ((window.event) ? window.event : "") keyCode = evt.keyCode ? evt.keyCode : (evt.w

js 兼容多浏览器复制内容代码

function copyToClipboard(txt) {   if (window.clipboardData) {     window.clipboardData.clearData();     window.clipboardData.setData("text", txt);   } else if (navigator.userAgent.indexOf("Opera") != -1) {     window.location = txt;