GVKun编程网logo

ajax中get和post的提交、却别、错误处理以及注意事项(ajax get)

27

如果您对ajax中get和post的提交、却别、错误处理以及注意事项和ajaxget感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解ajax中get和post的提交、却别、错误处理以及注意事项的

如果您对ajax中get和post的提交、却别、错误处理以及注意事项ajax get感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解ajax中get和post的提交、却别、错误处理以及注意事项的各种细节,并对ajax get进行深入的分析,此外还有关于Ajax post提交方式注意事项、ajax中get与post的区别,及ajax乱码解决方法、Ajax中get与post的区别,以及Ajax中的乱码问题的解决方法(PHP)、ajax中get和post两种请求的区别的实用技巧。

本文目录一览:

ajax中get和post的提交、却别、错误处理以及注意事项(ajax get)

ajax中get和post的提交、却别、错误处理以及注意事项(ajax get)

版权声明:本文为博主原创文章,未经博主允许不得转载。

<!doctype html>
<html lang="en">
<head>
<Meta charset="UTF-8">
<title>Document</title>
</head>
<body>
$.get和$.post的不同
1、get通过url提交的,post是通过http消息实体提交的
2、get提交大小限制为2kb,post不限制
3、get提交会被缓存下来,有安全隐患,post没有
4、get通过$_get[],而post通过$_POSt[]获取




$.get 和 $.post的几种传参方式
1、在url后面直接问号传参: test.PHP?age=20
2、以字符串键值对的方式传参: 'age=20'
3、以对象键值对的方式传参: {age:20}


$.get 以上三种方式都支持,但是$.post和$.ajax只支持后2种写法


具体demo:
1、$.get('test.PHP?age=20',function(result){
alert(result)
})
2、$.get('test.PHP','age=20',function(result){
alert(result)
})
3、$.get('test.PHP',{age:20},function(result){
alert(result)
})


,PHP文件异步请求默认返回的是text或html的type类型,如果返回的是非json类型强制用type转成json类型可能会报错



三、getScript 一般就是引入一个js文件
$.getScript('demo.js') 即可
四:getScript 请求一个json文件,不必要指定返回的数据类型,而且如果制定了非json的type类型如type:html ,由于安全性高一点也不会返回html格式的数据


五、在用ajax 提交表单的时候可以用表单序列化获取表单的传参内容,而且传参的形式是字符串键值对,并且还会对url进行编码
$('form').serialize();
如:$.ajax({
type:'POST',
url:'text.PHP',
data: $('form').serialize(),
success:function(response,status,xhr){
dosomething...
}
})


五-1;在一下html中可以用decodeURLComponent对序列化的数据进行解码
<form>
<input type="checkBox" name="sex" value="男" id="">
<input type="checkBox" name="sex" value="女" id="">
</form>
<div id="Box"></div>
<script>
$('form input[name=sex]').click(function(){
$('#Box').html(decodeURLComponent($(this).serialize()))
})
</script>


5-2,以上的例子可以用serializeArray()可将数据格式化为json格式


六;ajaxSetup 是对ajax进行初始化,应用场景当多个ajax重复用到某些数据的时候可以分装起来如:
$.ajaxSetup({
type:'POST',
url:'text.PHP',
data:'{}'
});
$('form :submit').click(function(){
$.ajax({
success:function(response,xhr){


}
})
});


7.$.param()方法可对复杂的json进行字符串键值对解析r




进阶:
8、$.ajaxstart()和$.ajaxStop()放置加载时间过长处理
在jq1.8版本后必须绑定在document上如:
$(document).ajaxStart(function(){
$('.loading').show()
}).ajaxStop(function(){
$('.loading').hide()
});


8-1 如果加载超时,可以用timeout设置超时限制


=============== $.ajax进阶 1、加载请求 $.ajaxStart() 、$.ajaxStop 可以在对用户等待时间加载loading图片 2、错误处理 $.ajax的错误处理 可以在自己当前添加error方法,参数是(xhr,statusText) 如: 2-1: $.ajax的error处理 $.ajax({ url:'www.SEOgjgsdggd.com/test.PHP',type:'POST',data:'age=20',error:function(xhr,statusText){ alert(xhr.status) } }); 2-1:$.post的error错误处理,添加连缀的局部方法error,errorText,errorType)如: $.post('test.PHP',function(response,xhr){ alert(response+"//"+xhr.status) }).error(function(xhr,errorType){ alert('错误') }); 也可以用全局的ajaxError方法如(1.8版本建议吧事件绑定在document上),但是参数有所不同(event,xhr,settings,errorType) 如: $(document).ajaxError(function(event,errorType){ event,settings都是对象,event一般就用(type,target)属性,settings一般就用(url,type); }); 3/ 请求全局事件有 $.ajaxstart(),$.ajaxstop()、$.ajaxError(),$.ajaxSuccess(),$.ajaxComplete,$.ajaxSend() 前三个是请求时出发的全局事件, $.ajaxSuccess() 对应一个局部方法 .success(); $.ajaxComplete()对应一个局部方法 .complete(); $.ajaxSend()没有对应的局部方法,只有属性beforeSend 例子: $(document).ajaxSend(function(){ alert(发送请求之前); }).ajaxComplete(function(){ alert(请求成功和失败之后都会出现,是出现在成功或者失败的后面); }).ajaxSuccess(function(){ alert(请求成功后); }).ajaxError(function(){ alert(请求失败后); }) $.post('test.PHP',$('form').serialize()).success(function(){ alert(请求成功后); }).complete(function({ alert(请求完成后); }).error(function(){ alert(请求失败后); }) $.ajax({ url:'test.PHP',data:$('form').serialize(),success:function(response,xhr){ alert(请求成功后); },complete:function(){ alert(请求完成后); },errorType){ alert(请求错误后); },beforSend:function(){ alert(请求之前); } })

</body> </html>

Ajax post提交方式注意事项

Ajax post提交方式注意事项

Ajax的post方式提交要注意send传递的参数要包含对应的接收的字符串名称,不能只是字段值。如传递:job="工作",切记忘记传递前面的job字符串,应该进行如下赋值后再利用ajax发送。

/* 创建Ajax对象 */

function createXMLHttpRequest()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+,Firefox,Chrome,Opera,Safari
xmlhttp=new XMLHttpRequest();
}
else
 {// code for IE6,IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
var postData="job"+job;
send(postData);

而不是直接send(job),切记遗漏参数名称!

postData与接收的Action变量名称要对应,当你接收不到参数值时可能是因为对应变量没有get set方法1.如果是接收的参数中文乱码,可以更改tomcat编码,更改方式:修改tomcat目录下的conf/server.xml找到如下位置

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

添加 URIEncoding="UTF-8"

添加完后为:

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8" />

ajax中get与post的区别,及ajax乱码解决方法

ajax中get与post的区别,及ajax乱码解决方法

一.谈Ajax的Get和Post的区别

各个表单字段元素及其数据按照URL参数的格式附加在请求行中的资源路径后面。另外最重要的一点是,它会被客户端的浏览器缓存起来,那么,别人就可以从浏览器的历史记录中,读取到此客户的数据,比如帐号和密码等。因此,在某些情况下,get方法会带来严重的安全性问题。

参数进行传递,使用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 >

abc&sex=man&age=18以及var >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处理的话,也会产生乱码.

Ajax中get与post的区别,以及Ajax中的乱码问题的解决方法(PHP)

Ajax中get与post的区别,以及Ajax中的乱码问题的解决方法(PHP)

总结

以上是小编为你收集整理的Ajax中get与post的区别,以及Ajax中的乱码问题的解决方法(PHP)全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

ajax中get和post两种请求的区别

ajax中get和post两种请求的区别

Ajax(AsynchronousJavascriptAndXML)即异步JavaScript和XML,通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新;这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新(即局部刷新);而传统的网页(不使用 AJAX)如果需要更新内容,必须重载整个网页页面。

了解完定义后,就要使用ajax技术了,不过在使用之前我们要先了解请求时get和post的区别以及两者各自在何时使用最为合适。


get和post的区别:

1.get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。

2.对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。两种方式的参数都可以用Request来获得。

3.get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,因服务器的不同而异。

4.get安全性非常低,post安全性较高。

5.传递参数时

get方式:在请求时,要连带发送相关参数,将参数附加在URL上即可,例如:

<span> var urlAndqueryString = "yourApp?name=justin&age=30";
     xmlHttp.open("GET",urlAndqueryString); 
     xmlHttp.send(null);
</span>
post方式:在请求时,要连带发送相关参数,將要发送的参数塞到send()中即可,例如:
<span>var url = "yourApp";
    var queryString = "name=justin&age=30";
    xmlHttp.open(“POST",url);
    xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    xmlHttp.send(queryString);</span>

6.通过URL发送请求时,,GET 方式把表单内容放在前面的请求头中,也就是在地址栏中能够看到传递的参数;而 POST 则把这些内容放在请求的主体中了,同时 POST 中把请求的 Content-Type 头设置为 application/x-www-form-urlencoded,即将传递的参数放在了请求的文件中,地址栏不可见;但两者发送的正文都是一样的。

7.Get请求有如下特性:

它会将数据添加到URL中,通过这种方式传递到服务器,通常利用一个问号?代表URL地址的结尾与数据参数的开端,后面的参数每一个数据参数以“名称=值”的形式出现,参数与参数之间利用一个连接符&来区分。

Post请求有如下特性:

数据是放在HTTP主体中的,其组织方式不只一种,有&连接方式,也有分割符方式,可隐藏参数,传递大批数据,比较方便。


使用场合:

与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。

然而,在以下情况中,请使用 POST 请求:

1.无法使用缓存文件(更新服务器上的文件或数据库)

2.向服务器发送大量数据(POST 没有数据量限制)

3.发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠

关于ajax中get和post的提交、却别、错误处理以及注意事项ajax get的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于Ajax post提交方式注意事项、ajax中get与post的区别,及ajax乱码解决方法、Ajax中get与post的区别,以及Ajax中的乱码问题的解决方法(PHP)、ajax中get和post两种请求的区别等相关内容,可以在本站寻找。

本文标签: