Jquery一些常用方法区分
一.$.get()
$.get(url,[data],[callback])
说明:url为请求地址,data为请求数据的列表,callback为请求成功后的回调函数,该函数接受两个参数,第一个为服务器返回的数据,第二个参数为服务器的状态,是可选参数。而其中,服务器返回数据的格式其实是字符串形势,并不是我们想要的json数据格式
二.$.post()
$.post(url,[data],[callback],[type]) :使用POST方式来进行异步请求
说明:这个函数跟$.get()参数差不多,多了一个type参数,type为请求 的数据类型,可以是html,xml,json等类型,如果我们设置这个参数为:json,那么返回的格式则是json格式的,如果没有设置,就 和$.get()返回的格式一样,都是字符串的
参数:
url (String) : 发送请求的URL地址.
data (Map) : (可选) 要发送给服务器的数据,以 Key/value 的键值对形式表示。
callback (Function) : (可选) 载入成功时回调函数(只有当Response的返回状态是success才是调用该方法)。
type (String) : (可选)官方的说明是:Type of data to be sent。其实应该为客户端请求的类型(JSON,XML,等等)
$.post("Ajax.aspx", { Action: "post", Name: "lulu" },
function (data, textStatus){
// data 可以是 xmlDoc, jsonObj, html, text, 等等.
//this; // 这个Ajax请求的选项配置信息,请参考jQuery.get()说到的this
alert(data.result);
}, "json");点击提交:
三.$.ajax()
$.ajax(opiton)
function getVerify(){
if($('#regRuser').val()){
var m=$('#regRuser').val();
if(/^13d{9}$/g.test(m)||(/^15[0-35-9]d{8}$/g.test(m))|| (/^18d{9}$/g.test(m))){
var postData
= $('#reg_form').serialize();
$.ajax({
type: "POST",
url: "/ajax/getVerify",
data: postData,
success:
function(msg){
if(msg>0){
alert('验证码已发送至您手机,请注意查收');
$('#getVerify').hide();
$('.regnav').css('background','url(/static/images/v10/regnav2.png)');
$('#checkvalidate').show();
f_timeout();
$('.abc').show();
}else if(msg==0){
alert('手机号已被注册');
}
}
});
}else{
alert('请输入正确的手机号');
}
}
}
$.Form.serialize( NameValuePair )
虚拟一个表单,并设置表单控件名与值。
参数 :NameValuePair
必选项。设置虚拟的表单控件。该参数形式为:{ name1=value, name2=value2, ......}
返回值
虚拟表单序列化后的字符串,其格式如:username=%E5%95%8A%E8%94%A1&password=123456
描述
表单中如有 disabled=true 或者没有 name 属性的控件将被忽略。同名控件将发送一组同名但不同值的字符串。该方法通常用于 Ajax 的提交参数(parameters)。
示例
<form method="post" name="reg" action="http://localhost"> //username=%E5%95%8A%E8%94%A1&password=123456&interest=music&interest=sport&interest=dance®time=Thu%2C%2027%20Sep%202007%2008%3A35%3A55%20UTC。 |
从上面可以看得出来这个是ajax get格式了,数据量不能太大了。
四.$('#xxx').load(url,para)
调用load方法的完整格式是:load( url, [data], [callback] ),
•url:是指要导入文件的地址。
•data:可选参数;因为Load不仅仅可以导入静态的html文件,还可以导入动态脚本,例如PHP文件,所以要导入的是动态文件时,我们可以把要传递的参数放在这里。
•callback:可选参数;是指调用load方法并得到服务器响应后,再执行的另外一个函数。
<meta
http-equiv=
"Content-Type"
content=
"text/html;
charset=UTF-8"
>
<title>jquery
ajax</title>
<script
type=
"text/javascript"
src=
"jquery-1.2.6.js"
></script>
<script
language=
"javascript"
>
$(document).ready(function
()
{
$(
'#send_ajax'
).click(function
(){
var
params=$(
'input'
).serialize();
//序列化表单的值
$.ajax({
url:
'ajax_json.php'
,
//后台处理程序
type:
'post'
,
//数据发送方式
dataType:
'json'
,
//接受数据格式
data:params,
//要传递的数据
success:update_page
//回传函数(这里是函数名)
});
});
//$.post()方式:
$(
'#test_post'
).click(function
(){
$.post(
'ajax_json.php'
,
{
username:$(
'#input1'
).val(),
age:$(
'#input2'
).val(),
sex:$(
'#input3'
).val(),
job:$(
'#input4'
).val()
},
function
(data)
//回传函数
{
var
myjson=
''
;
eval_r(
'myjson='
+ data +
';'
);
$(
'#result'
).html(
"姓名:"
+ myjson.username +
"<br>工作:"
+ myjson[
'job'
]);
}
);
});
//$.get()方式:
$(
'#test_get'
).click(function
()
{
$.get(
'ajax_json.php'
,
{
username:$(
"#input1"
).val(),
age:$(
"#input2"
).val(),
sex:$(
"#input3"
).val(),
job:$(
"#input4"
).val()
},
function(data)
//回传函数
{
var
myjson=
''
;
eval_r(
"myjson="
+ data +
";"
);
$(
"#result"
).html(myjson.job);
}
);
});
});
function
update_page (json)
//回传函数实体,参数为XMLhttpRequest.responseText
{
var
str=
"姓名:"
+json.username+
"<br>"
;
str+=
"年龄:"
+json.age+
"<br>"
;
str+=
"性别:"
+json.sex+
"<br>"
;
str+=
"工作:"
+json.job+
"<br>"
;
str+=
"追加测试:"
+json.append;
$(
"#result"
).html(str);
}
</script>
<div
id=
"result"
style=
"background:orange;border:1px
solid red;width:300px;height:200px;"
>
<form
id=
"formtest"
action=
""
method=
"post"
>
<p><span>输入姓名:</span><input
type=
"text"
name=
"username"
id=
"input1"
></p>
<p><span>输入年龄:</span><input
type=
"text"
name=
"age"
id=
"input2"
></p>
<p><span>输入性别:</span><input
type=
"text"
name=
"sex"
id=
"input3"
></p>
<p><span>输入工作:</span><input
type=
"text"
name=
"job"
id=
"input4"
></p>
</form>
<button
id=
"send_ajax"
>提交</button>
<button
id=
"test_post"
>POST提交</button>
<button
id=
"test_get"
>GET提交</button>
</div>
谈Ajax的Get和Post的区别
Get方式:
用get方式可传送简单数据,但大小一般限制在1KB下,数据追加到url中发送(http的header传送),也就是说,浏览器将各个表单字段元素及其数据按照URL参数的格式附加在请求行中的资源路径后面。另外最重要的一点是,它会被客户端的浏览器缓存起来,那么,别人就可以从浏览器的历史记录中,读取到此客户的数据,比如帐号和密码等。因此,在某些情况下,get方法会带来严重的安全性问题。
Post方式:
当使用POST方式时,浏览器把各表单字段元素及其数据作为HTTP消息的实体内容发送给Web服务器,而不是作为URL地址的参数进行传递,使用POST方式传递的数据量要比使用GET方式传送的数据量大的多。
总之,GET方式传送数据量小,处理效率高,安全性低,会被缓存,而POST反之。
使用get方式需要注意:
1 对于get请求(或凡涉及到url传递参数的),被传递的参数都要先经encodeURIComponent方法处理.例:var url = "update.php?username=" +encodeURIComponent(username) + "&content=" +encodeURIComponent
(content)+"&id=1" ;
使用Post方式需注意:
1.设置header的Context-Type为application/x-www-form-urlencode确保服务器知道实体中有参数变量. 通常使用XmlHttpRequest对象的SetRequestHeader("Context-Type","application/x-www- form-urlencoded;")。例:
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
2.参数是名/值一一对应的键值对,每对值用&号隔开.如 var name=abc&sex=man&age=18,注意var name=update.php?
abc&sex=man&age=18以及var name=?abc&sex=man&age=18的写法都是错误的;
3.参数在Send(参数)方法中发送,例: xmlHttp.send(name); 如果是get方式,直接 xmlHttp.send(null);
4.服务器端请求参数区分Get与Post。如果是get方式则$username = $_GET["username"]; 如果是post方式,则$username = $_POST["username"];
AJAX乱码问题
产生乱码的原因:
1、xtmlhttp 返回的数据默认的字符编码是utf-8,如果客户端页面是gb2312或者其它编码数据就会产生乱码
2、post方法提交数据默认的字符编码是utf-8,如果服务器端是gb2312或其他编码数据就会产生乱码
解决办法有:
1、若客户端是gb2312编码,则在服务器指定输出流编码
2、服务器端和客户端都使用utf-8编码
gb2312:header('Content-Type:text/html;charset=GB2312');
utf8:header('Content-Type:text/html;charset=utf-8');
注意:如果你已经按上面的方法做了,还是返回乱码的话,检查你的方式是否为get,对于get请求(或凡涉及到url传递参数的),被传递的参数都要先经 encodeURIComponent方法处理.如果没有用encodeURIComponent处理的话,也会产生乱码.
1。请求text数据,在success事件中手动解析