jQuery get和post 方法传值注意事项

  刚刚做了几个实验,看看下面的代码就清楚了:

  以下内容需要回复才能看到

  jquery_data.php

  

复制代码 代码如下:

  <?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)

  {

  $('<pre/>').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 参数中。

  总之方法是死的,人是活的,怎么用还要看实际情况。子曾经曰过:实践是检验真理的唯一标准。没事做做实验,掌握知识更牢固.