jquery $.ajax $.get $.post的区别是什么噢?

P_PAN 2013-05-16 09:44:45
为什么要有$.get $.post呢,这两种方法用在什么地方呢,和$.ajax有什么区别呢??
...全文
8960 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
s478853630 2013-05-17
  • 打赏
  • 举报
回复
我一般用自己的一套ajax,也蛮好用的:

/** 全局ajax对象 */
var ajax = new Object();
var ajaxCore = null;

/**
 * @see 创建ajax核心对象,兼容浏览器有:IE6,7,8,9,谷歌,火狐,欧朋,360极速,360安全,苹果,搜狗,遨游,猎豹,腾讯
 * @return XMLHttpRequest
 */
ajax.getCore = function() {
	var xmlHttp = null;
	if (window.XMLHttpRequest) {
		xmlHttp = new XMLHttpRequest();
		if (xmlHttp.overrideMimeType) {
			xmlHttp.overrideMimeType("text/xml");
		}
	} else {
		if (window.ActiveXObject) {
			try {
				xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
			}
		}
	}
	if (!xmlHttp) {
		window.alert("\u8bf7\u4f7f\u7528IE\u6d4f\u89c8\u5668!");
	}
	return xmlHttp;
};

/**
 * @see 处理ajax参数
 * @param param 参数
 * @return String
 */
ajax.getParam = function(param) {
	var randomStr = "ajaxParamRandom=" + Math.random();
	if (param == null || param == "") {
		return randomStr;
	}
	var str = "";	
	if (typeof(param) == "object") {
		for (var key in param) {
			str += key + "=" + param[key] + "&";
		}
		str = (str.length > 0 ? str.substring(0, str.length - 1) : str);
	} else {
		str = param;
	}
	return str + "&" + randomStr;
};

/**
 * @see ajax的回调函数
 * @param callback 用户自定义回调函数
 * @param url 请求的url
 */
ajax.doCallback = function(callback, url) {
	if (ajaxCore.readyState == 4) {
		if (ajaxCore.status == 200) {
			if (callback == null) {
				return;
			}
			var result = new String(ajaxCore.responseText);
			if (null != result && result != "") {
				if (result == "null") {
					callback(null);
				} else {
					var backObject = null;
					if (result == "true" || result == "false") {
						backObject = eval(result);
					} else if (!isNaN(result)) {
						backObject = parseFloat(result);
					} else if ((result.substring(0, 1) == "[" && result.substring(result.length - 1, result.length) == "]") || 
							(result.substring(0, 1) == "{" && result.substring(result.length - 1, result.length) == "}")) {
						backObject = eval("(" + result + ")");
					} else {
						backObject = result;
					}
					callback(backObject);
				}
			} else {
				callback(result);
			}			
		} else if (ajaxCore.status == 0 || ajaxCore.status == 12029) {
			showProgress("0", "1");
			alertWin("\u627e\u4e0d\u5230\u670d\u52a1\u5668\uff01", null, "");
		} else if (ajaxCore.status == 404) {
			showProgress("0", "1");
			alertWin("\u627e\u4e0d\u5230\u8d44\u6e90: " + url, null, "");
		}
	}
};

/**
 * @see ajax的post请求
 * @param url 请求的url
 * @param param 参数列表,可以是字符串或js对象或null
 * @param callback 用户自定义回调函数
 */
ajax.post = function(url, param, callback) {
	ajaxCore = ajax.getCore();
	if (ajaxCore != null) {
		ajaxCore.onreadystatechange = function() {
			ajax.doCallback(callback, url);
		};
		ajaxCore.open("POST", url, true);
		ajaxCore.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		ajaxCore.send(ajax.getParam(param));
	}
};

/**
 * @see ajax的get请求
 * @param url 请求的url
 * @param callback 用户自定义回调函数
 */
ajax.get = function(url, callback) {
	ajaxCore = ajax.getCore();
	if (ajaxCore != null) {
		if (url.indexOf("?") != -1) {
			url += "&ajaxParamRandom=" + Math.random();
		} else {
			url += "?ajaxParamRandom=" + Math.random();
		}alert(url);
		ajaxCore.onreadystatechange = function() {
			ajax.doCallback(callback, url);
		};
		ajaxCore.open("GET", url, true);
		ajaxCore.send(null);
	}
};
以上代码写在一个单独的js文件中,其它地方引入,调用方式如下:

showProgress("1", "1");// ajax进度条: 正在提交,请稍候....
ajax.post("/oc/iva.htm", {id:1, version:'1.2.6'}, function(json) {
		showProgress("0", "1");// 关闭进度条
		alert(json.success);
	});
lz若能看懂以上代码,get和post就自然明白了
whos2002110 2013-05-17
  • 打赏
  • 举报
回复 2
其实没什么区别, $.get, $,post都是基于$.ajax的只是简化了ajax调用而已, 前面二者都只能传入4个基本的参数, 如果需要在出错时执行函数,或者设置同步,或者其它的复杂业务就只能调用$.ajax. 建议在编写ajax调用时都尽量进行错误处理, 这样能在开发阶段避免很多不必要的问题
xianwangkai 2013-05-17
  • 打赏
  • 举报
回复
post和get其实区别还是比较大的: get是把参数数据队列加到提交表单的ACTION属性所指的URL中所以是信息不安全的;并且url的长度是有限制的。 post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址,是看不到相对安全一些;传递的参数无限制的。 建议: 1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式; 2、在做数据查询时,可以用Get方式,因为它效率高;而在做数据添加、修改或删除时,建议用Post方式,因为它安全; 至于ajax,那就更简单:ajax是异步,post是同步,至于很细的区分,你可以百度一下!
u010719878 2013-05-17
  • 打赏
  • 举报
回复
post 和 get 方式 区别 大概有三点:1: 传递的参数 post 在url 栏显示 但有长度限制
Acesidonu 2013-05-17
  • 打赏
  • 举报
回复
参数传递方式不一样
燃木刀法 2013-05-17
  • 打赏
  • 举报
回复
$ajax是jQuery中较底层的ajax的方法, $get也是实现异步请求的一种方式,是对$ajax的封装。类似于form表单中的get方式的求情,你懂的。 $post和$get差不多类似于form表单中的post方式的请求,希望对你有所帮助。
宁波朱超 2013-05-16
  • 打赏
  • 举报
回复
好难哦,真的好难好难哦。
P_PAN 2013-05-16
  • 打赏
  • 举报
回复
谁进来讲讲啊,我今天白话了一堆,自我感觉对了,进来讨论讨论啊
P_PAN 2013-05-16
  • 打赏
  • 举报
回复
谁进来讲讲啊,我今天白话了一堆,自我感觉对了,进来讨论讨论啊

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧