Ajax 对象 包含post和get两种异步传输方式

代码如下:

/**
* @author Supersha
* @QQ:770104121
*/
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Ajax Document</title>
<script type="text/javascript">
//注意,编码要同意为utf-8才能避免中文参数和返回中文的乱码问题
function Ajax(prop){
this.action(prop); //在实例化的时候就调用action方法
}
Ajax.prototype = {
createXHR: function(){ //创建XMLHttpRequest对象
var xhr = false;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
}
else
if (window.ActiveXObject) {
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xhr;
},
action: function(prop){
var xhr = this.createXHR();
if (xhr) {
var url = encodeURI(prop["url"]); //对URL进行编码
if (prop["method"] == "GET" && url && prop["success"]) { //GET方法
xhr.onreadystatechange = function(){
(function(){ //自执行函数用于检查服务器的返回状态并执行回调函数
if (xhr.readyState == 4 && xhr.status == 200) {
prop["success"](xhr); //执行回调函数
}
})();
};
//alert(prop["hander"] instanceof Function);
xhr.open("GET", url, true);
xhr.send(null);
}
else
if (prop["method"] == "POST" && url && prop["success"]) { //POST方法
xhr.onreadystatechange = function(){
(function(){
if (xhr.readyState == 4 && xhr.status == 200) {
prop["success"](xhr); //执行回调函数
}
})();
};
if (prop["params"]) {
url = url.indexOf("?") > -1 ? url + "&" + prop["params"] : url +"?" + prop["params"];
}
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send(null);
}
}
else
if (!xhr && prop["fail"]) {
prop["fail"]();
}
}
}
function getData(){
var ajax = new Ajax({
url: "test.php",
method: "POST",
success: onComplete,
params: "name="+escape("沙锋") //进行编码
});
}
function onComplete(obj){
alert(unescape(obj.responseText)); //进行转码
}
</script>
</head>
<body>
<input type="button" value="Get Data" onclick="getData()"/>
</body>
</html>

注释:
Ajax对象接受一个对象字面量为参数,这个对象字面量中包含method,url,success,params,fail参数
method:"GET"或者"POST"
url:服务器端文件路径
success:当请求没有错误的时候,调用的回调函数,该回调函数带一个XMLHttpRequest对象的参数
fail:当请求错误的时候调用
params:当使用POST方法发送请求是,params为参数字符串

(0)

相关推荐

  • 利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法

    准备工作: ① 首先要会使用ThinkPHP这个框架 ② 最好有些ajax的基础(可以去看下小飞的另外一篇博文:Ajax实时验证"用户名/邮箱等"是否已经存在) ③ 4个js文档(点此免积分下载) 先贴上源代码: 复制代码 代码如下: <script type="text/javascript" src="__PUBLIC__/js/base.js"></script> <script type="text

  • JQuery中使用ajax传输超大数据的解决方法

    直接说问题,在一个页面用了Jquery(1.6)的Ajax请求,用的post,传递显示的数组有500多条.php端却只能接受到50条左右.刚开始以为是web服务器设置的问题,把,max_upload_size这类的都改了.但是没有效果,后来尝试用max_input_vars这个是新玩艺,刚开始还有点作用.后来,客户的数据超过2000的时候,还是一样,php端还是不能完全接受到ajax发送过来的数据.最后,在国外的一网站上,找到了解决方案. 在post发送前,将要发送的变量用JSON.string

  • Ajax异步传输与PHP实现交互示例

    背景 前台页面两个select框,一个与学院关联,另一个与专业关联,现需要选择学院select框后,显示学院相关信息,且专业select下面仅有属于该学院的专业名称.也就是实现一个二级联动效果. 两个select里面分别定义onchange事件,事件中利用ajax的GET方法向后台PHP递交信息,再将查询得到的信息echo出来或document.write. 注:代码参考了有位叫y0umer的博主写的. 复制代码 代码如下: <script type="text/javascript&qu

  • AJAX 异步传输数据的问题

    要异步传输的数据: Xml代码 .... <action xsi:type="basic:JavaScript" script="index += 1;"/> .... Ajax异步传输代码: Js代码 复制代码 代码如下: var postData = "input="+ escape(inputJSON) +"&script="+escape(xml)+ "&feedGeneral=&

  • Ajax实现的异步传输与验证示例代码

    Ajax异步传输用得很广,就拿web开发来说吧,当用户注册时,当用户刚一输完,怎么立即判断用户是否存在,并在输入框后显示提示?这就用到了异步传输~~ 它可以让你不离开页面的情况下,获取后台你想要的数据,并显示在当前页面!!好的,下面看个例子 下面是一段Ajax验证代码 复制代码 代码如下: <script type="text/javascript"> //① 设置变量 var xmlHttp ; var flag = false ; var package_name; /

  • AJAX在GB2312的中文编码传输 AJAX特殊字符编码正确方法

    很多可能在转摘过程中失真或未经验证就被转摘,真正使用时却不行,也由此决定自己全方位试验一下,努力还是没有白费,虽然最终得出的结果是很简单的,但其过程对于一个新学AJAX的人来说,真是挺累.欢迎您在使用过程中对新的心得一起跟帖交流,一个思想+一个思想,至少可以产生两个思想. 一.在GET发送时: 方法1:在ASP服务器端用Response.charset="GB2312"界定输出编码给调用客户端 此时客户端不需要做什么转换即可.如下两个文件: 1.客户端JS 复制代码 代码如下: var

  • Ajax同步与异步传输的示例代码

    复制代码 代码如下: //同步传输模式 function RequestByGet(nProducttemp,nCountrytemp)   {       var xmlhttp if (window.XMLHttpRequest)         {              //isIE   =   false;              xmlhttp   =   new   XMLHttpRequest();         }         else if (window.Acti

  • ajax数据传输方式实例详解

    本文实例讲述了ajax数据传输方式.分享给大家供大家参考,具体如下: 在异步应用程序中发送和接收信息时,常见的可以选择以纯文本和XML作为数据格式(可参考<jQuery学习笔记之Ajax用法实例详解>),现在还有一种比较流行的方式:JSON(JavaScript Object Notation).好了,下面举例说明这三种数据格式在ajax的异步应用. 一.纯文本方式 1.发送/接收数据: Code is cheap.看代码: testJs.js // 此函数等价于document.getEle

  • Ajax 对象 包含post和get两种异步传输方式

    复制代码 代码如下: /** * @author Supersha * @QQ:770104121 */ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="

  • ajax中data传参的两种方式分析

    本文实例讲述了ajax中data传参的两种方式.分享给大家供大家参考,具体如下: 1. POST方式: /** * 订单取消 * @return {Boolean} 处理是否成功 */ function orderCancel(orderId, commant){ var flag = false; $.ajax({ type: "POST", url: "../order/orderCancel.action", //orderModifyStatus data:

  • js的form表单提交url传参数(包含+等特殊字符)的两种解决方法

    方法一:(伪装form表单提交) linkredwin = function(A,B,C,D,E,F,G){ var formredwin = document.createElement("form"); formredwin.method = 'POST'; document.body.appendChild(formredwin); formredwin.action = "http://www.A.com/A.wiki?A=" +encodeURI(A) +

  • ajax的两种提交方式(get/post)和两种版本

    最近比较闲,就把以前用过的技术串一下做个手札,方便以后自己偷懒,小鸟你们幸福了. 首先主要是将javascript版本ajax做下注释:ajax异步刷新主要是将所需条件拼成字符串传入后台,处理之后,直接调用回调函数将所得数据返还给页面,并加以显示,因为还在本页面,所以不用刷新页面,懂了了吧,本篇也用encodeURI对字符串做了加密,并在类里做了解码,其中需要一些注意的地方在源码里做了注释.get/post两种提交方式,但get提交容易乱码,一定多加注意 jsp页面: 复制代码 代码如下: <%

  • jquery的ajax提交form表单的两种方法小结(推荐)

    jquery的ajax提交form表单的两种方法小结(推荐) 方法一: function AddHandlingFeeToRefund() { var AjaxURL= "../OrderManagement/AjaxModifyOrderService.aspx"; alert($('#formAddHandlingFee').serialize()); $.ajax({ type: "POST", dataType: "html", url:

  • python对象转字典的两种实现方式示例

    本文实例讲述了python对象转字典的两种实现方式.分享给大家供大家参考,具体如下: 一. 方便但不完美的__dict__ 对象转字典用到的方法为__dict__. 比如对象对象a的属性a.name='wk', a.age=18, 那么如果直接将使用a.__dict__获得对应的字典的值为: {name: 'wk', aget:18}, 很方便, 但是也存在一些限制. 其不完美之处在于: 比如: class A(object): name = 'wukt' age = 18 def __init

  • jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解

    本文实例讲述了jQuery autoComplete插件两种使用方式及动态改变参数值的方法.分享给大家供大家参考,具体如下: 一.一次加载.多次使用: 前端JS代码: /*客户名称自动匹配*/ function customerAutoComplete(){ $.ajax({ type:"GET", url:encodeURI("/approvalajax/salesOrderApproval_findCustomerList"), dataType:"j

  • 基于String变量的两种创建方式(详解)

    在java中,有两种创建String类型变量的方式: String str01="abc";//第一种方式 String str02=new String("abc")://第二种方式 第一种方式创建String变量时,首先查找JVM方法区的字符串常量池是否存在存放"abc"的地址,如果存在,则将该变量指向这个地址,不存在,则在方法区创建一个存放字面值"abc"的地址. 第二种方式创建String变量时,在堆中创建一个存放&q

  • Android中fragment与activity之间的交互(两种实现方式)

    (未给Fragment的布局设置BackGound) 之前关于Android中Fragment的概念以及创建方式,我专门写了一篇博文<详解Android中Fragment的两种创建方式>,就如何创建Fragment混合布局做了详细的分析,今天就来详细说道说道Fragment与宿主Activity之间是如何实现数据交互的. 我们可以这样理解,宿主Activity中的Fragment之间要实现信息交互,就必须通过宿主Activity,Fragment之间是不可能直接实现信息交互的. Fragmen

  • python使用mysql的两种使用方式

    Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymql pymsql是Python中操作MySQL的模块,在windows中的安装: pip install pymysql 入门:我们连接虚拟机中的centos中的mysql,然后查询test数据库中student表的数据 import pymysql #创建连接 conn = pymysql.connect(host='192.168.123.207',port=3306,user='r

随机推荐