`
天梯梦
  • 浏览: 13731742 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

浅谈ajax中get与post的区别,以及ajax中的乱码问题的解决方法

阅读更多

一.谈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"];



Post和Get 方法有如下区别:


1.Post传输数据时,不需要在URL中显示出来,而Get方法要在URL中显示。


2.Post传输的数据量大,可以达到2M,而Get方法由于受到URL长度的限制,只能传递大约1024字节.


3.Post顾名思义,就是为了将数据传送到服务器段,Get就是为了从服务器段取得数据.而Get之所以也能传送数据,只是用来设计告诉服务器,你到底需要什么样的数据.Post的信息作为http请求的内容,而Get是在Http头部传输的。
get 方法用Request.QueryString["strName"]接收
post 方法用Request.Form["strName"] 接收


注意:
虽然两种提交方式可以统一用Request("strName")来获取提交数据,但是这样对程序效率有影响,不推荐使用。
一般来说,尽量避免使用Get方式提交表单,因为有可能会导致安全问题



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处理的话,也会产生乱码.

 

实例:

 

POST

 

x = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
	x = new XMLHttpRequest();
	if (x.overrideMimeType)  x.overrideMimeType('text/html');
} else if (window.ActiveXObject) { // IE
	try { x = new ActiveXObject("Msxml2.XMLHTTP"); }
	catch (e) { try { x = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} }
}

if (!x) { alert('Cannot create XMLHTTP instance'); return false; }

if (document.getElementById) {var x = (window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); }

if (x)
{
    x.onreadystatechange = function() {
        if (x.readyState == 4 && x.status == 200) {
            document.getElementById(displayid).innerHTML = x.responseText;
            document.getElementById(id).innerHTML = '';
        }
    }
	
	if(parametros!='') parameters='ajaxid=' + parametros; else parameters='';
	url=programa;

	x.open('POST', url, true);
	x.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	x.setRequestHeader("Content-length", parameters.length);
	x.setRequestHeader("Connection", "close");
	x.send(parameters);
}

 

GET

 

x = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
	x = new XMLHttpRequest();
	if (x.overrideMimeType)  x.overrideMimeType('text/html');
} else if (window.ActiveXObject) { // IE
	try { x = new ActiveXObject("Msxml2.XMLHTTP"); }
	catch (e) { try { x = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} }
}

if (!x) { alert('Cannot create XMLHTTP instance'); return false; }

if (document.getElementById) {var x = (window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); }

if (x)
{
    x.onreadystatechange = function() {
        if (x.readyState == 4 && x.status == 200) {
            document.getElementById(displayid).innerHTML = x.responseText;
            document.getElementById(id).innerHTML = '';
        }
    }
    if(parametros!='') url=programa+'?ajaxid=' + parametros; else url=programa;
    x.open("GET", url, true);
    x.send(null);
}
 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    ajax POST 与GET提交的区别

    ### AJAX POST 与 GET 提交的区别详解 #### 一、GET与POST基本概念及应用场景 在探讨AJAX中GET和POST的区别之前,我们先来了解一下这两种请求方式的基本概念。 **GET**请求通常用于获取资源信息,它将参数拼接到...

    ajax get请求中文参数乱码解决

    在本文中,我们将深入探讨这个问题,以及如何通过不同的方法来解决它。 首先,我们需要了解什么是Ajax GET请求。Ajax,全称Asynchronous JavaScript and XML,是一种在无需刷新整个页面的情况下与服务器交换数据并...

    php+Ajax(GET&POST)完美实例

    本文将深入探讨如何使用PHP和Ajax解决GET和POST请求中的中文乱码问题,并结合MySQL数据库实现数据的交互。 首先,PHP是一种服务器端的脚本语言,常用于Web开发,可以生成动态网页内容。在处理中文字符时,我们需要...

    ajax中文乱码如何解决

    在本文中,我们将深入探讨如何解决使用Ajax进行POST请求时出现的中文乱码问题。首先,我们要理解Ajax中文乱码的根源,它通常涉及到字符编码的不一致,尤其是在客户端与服务器之间的通信过程中。 Ajax(Asynchronous...

    ajax乱码解决方案

    总的来说,解决Ajax乱码问题的关键在于理解字符编码的工作原理,确保数据在整个传输过程中的编码与解码一致性,以及正确设置服务器和客户端的编码设置。在实际应用中,还应考虑跨平台和跨浏览器的兼容性,以确保解决...

    j2ee21:ajax01:get提交、post提交(完成用户名搜索),两者的区别(中文乱码问题、缓存问题)

    在这个教程中,我们将深入探讨AJAX的GET和POST提交方式,以及它们在实现用户名搜索功能时的区别,同时也会解决可能出现的中文乱码问题和缓存问题。 首先,GET和POST是HTTP协议中的两种主要请求方法,它们在AJAX中...

    AJAX在Post中文的时候解决乱码的方法

    ### AJAX在POST中文时解决乱码的方法 #### 一、问题背景 在使用AJAX进行数据请求时,尤其是在处理中文字符的过程中,经常会遇到一个常见问题:即通过AJAX请求得到的`responseText`中的中文字符出现乱码。这个问题...

    Ajax使用POST提交中文乱码问题.docx

    在使用Ajax进行POST提交时,中文字符可能会遇到乱码问题,这是因为数据在传输过程中编码与解码不匹配导致的。Ajax以UTF-8编码发送数据,但服务器端可能使用了不同的字符集(如GB2312)来解析,这就产生了乱码。本文...

    解决ajax乱码和页面传值问题

    在Web开发中,Ajax(Asynchronous ...总结,解决Ajax乱码问题主要涉及数据编码、请求头设置和服务器端解码,而页面传值则需根据需求选择适当的方法。理解并熟练运用这些技巧,能显著提升Web应用的性能和用户体验。

    Ajax中文乱码问题解决方案

    ### Ajax中文乱码问题解决方案 在进行Ajax编程时,经常会出现中文乱码的问题,这主要是因为客户端和服务端之间编码设置不一致导致的。为了解决这个问题,我们需要从多个角度出发来确保数据传输过程中字符编码的一致...

    ajax乱码解决汇总

    总之,Ajax乱码问题主要涉及前端和后端的编码一致性以及数据传输格式。通过确保数据编码与解码的一致性,并在必要时调整Content-Type和响应头,可以有效避免乱码问题。在实际开发中,应始终关注字符编码的正确使用,...

    Ajax乱码小结

    #### 三、解决Ajax乱码的方法 1. **GET请求乱码解决方案**: - 客户端在发送GET请求前,可以使用`encodeURIComponent`函数对参数进行编码,确保参数的正确传输。 - 服务器端通过`request.getParameter()`获取到...

    js调用AJAX时Get和post的乱码解决方法

    总结起来,解决AJAX的GET和POST请求中的乱码问题主要涉及两方面:一是服务器端设置正确的响应字符编码,二是客户端确保请求数据的编码和解码过程与服务器端匹配。通过上述方法,可以有效地避免在处理非ASCII字符时...

    Ajax uri 乱码问题总结

    - 使用POST请求而非GET,因为POST请求的数据不在URI中,不会受到浏览器URI编码限制,乱码问题相对较少。 - 如果可能,尽量使用标准的UTF-8编码,因为UTF-8是更广泛支持的国际化编码标准。 总结来说,解决Ajax URI...

    Ajax乱码解决方案

    ### Ajax乱码解决方案 在进行Ajax开发的过程中,经常会遇到数据编码问题导致的乱码现象。这类问题虽然看似简单,但若处理不当,则可能耗费大量时间进行调试与解决。本文将结合一个具体的案例来探讨如何有效地解决...

    jQuery调用AJAX时Get和post公用的乱码解决方法实例说明

    以前在新浪博客写过js调用AJAX时Get和post的乱码解决办法,但是使用js代码比较繁琐,我们在使用ajax进行数据交互时可以使用js的一个成熟框架—jQuery。 一个网站的设计,不管是注册登录还是分页查找,都需要提交参数...

    JQuery的Ajax中Post方法传递中文出现乱码的解决方法

    2.解决JQuery的Ajax中Post方法传递中文出现乱码的方法: a.使用JavaScript的escape()函数处理:在传递中文参数之前,使用escape()函数对参数进行处理。这样可以将中文字符转换为十六进制数,避免了在传输过程中...

    ajax中get和post的说明及使用与区别

    **Ajax乱码问题及解决方案:** 1. Ajax返回数据乱码通常是由于服务器返回的字符编码与客户端页面编码不一致导致的。 2. POST提交数据乱码可能是服务器端编码与客户端编码不匹配。 3. 解决方案包括确保服务器和客户端...

    java+ajax处理乱码实例

    本实例将探讨如何在Java后端和Ajax前端交互过程中解决字符编码问题,防止出现乱码。 在Java中,处理字符编码的关键在于正确设置输入流和输出流的编码。当接收到Ajax请求时,服务器需要正确识别请求中的编码,同时在...

Global site tag (gtag.js) - Google Analytics