jQuery中get和post方法传值测试及注意事项
用jQuery的都知道,jQuery的get和post方法有三个参数:地址,数据和回调函数,但我们知道地址也可以跟随数据的(形如:get_data.php?v1=1&v2=2),而且第二个参数可以省略,即第二个参数可以直接写回调函数,那么数据写在地址后面和写在data参数里有什么区别呢?
刚刚做了几个实验,看看下面的代码就清楚了:
以下内容需要回复才能看到
jquery_data.php
echo"post:"; print_r($_POST); echo"get:"; print_r($_GET); ?>
jquery_test.html
实验1:
$(function(){ //post方法,两处都有数据 $.post('jquery_data.php?v1=1',{v2:2},function(data){ $(' ').append(data).appendTo('body'); }); });
返回结果:
post:Array ( [v2]=>2 ) get:Array ( [v1]=>1 )
实验2:
$(function() { //post方法,数据在地址后面,第二个参数为回调函数 $.post('jquery_data.php?v1=1',function(data) { $('<pre/>').append(data).appendTo('body'); }); });
返回结果,数据在get中:
post:Array ( ) get:Array ( [v1]=>1 )
实验3:
$(function() { //get方法,用data参数传值 $.get('jquery_data.php',{v2:2},function(data) { $('<pre/>').append(data).appendTo('body'); }); });
返回结果,数据在get中:
post:Array ( ) get:Array ( [v2]=>2 )
实验4:
$(function() { //get方法,两处都有数据 $.get('jquery_data.php?v1=1',{v2:2},function(data) { $('<pre/>').append(data).appendTo('body'); }); });
返回结果,两处数据被合并了,都在get中:
post:Array ( ) get:Array ( [v1]=>1 [v2]=>2 )
实验5:
$(function() { //get方法,两处都有数据,且变量名相同 $.get('jquery_data.php?v2=1',{v2:2},function(data) { $('<pre/>').append(data).appendTo('body'); }); });
返回结果,数据在get中,且data参数中的数据覆盖了地址后面的数据:
post:Array ( ) get:Array ( [v2]=>2 )
通过这几个简单的小例子不难看出,地址后面的数据永远是以get形式传递的,无论使用的是get方法还是post方法;而data参数中的数据是根据方法决定传递方式的。
因此,为了避免混淆,建议大家尽量不要把数据写在地址后面,而是统一放在data参数中。
当然,如果你想在用post方法时,同时利用get传值,那么就可以把要以get方式传递的数据写在地址后面,把要以post方式传递的数据写在data参数中。
总之方法是死的,人是活的,怎么用还要看实际情况。子曾经曰过:实践是检验真理的唯一标准。没事做做实验,掌握知识更牢固。