隨筆-31  評論-2  文章-0  trackbacks-0

          用 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 參數中。

          總之方法是死的,人是活的,怎么用還要看實際情況。子曾經曰過:實踐是檢驗真理的唯一標準。沒事做做實驗,掌握知識更牢固。
          posted on 2009-07-29 19:22 xiaoxinchen 閱讀(918) 評論(1)  編輯  收藏

          評論:
          # re: jQuery 中get 和post 方法傳值需要注意的[未登錄] 2009-12-19 15:37 | a
          a  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           
          主站蜘蛛池模板: 建水县| 长海县| 格尔木市| 新巴尔虎右旗| 荆门市| 岗巴县| 淮南市| 濮阳市| 尖扎县| 龙江县| 太仆寺旗| 富民县| 白玉县| 老河口市| 合山市| 梁平县| 林周县| 视频| 两当县| 巴中市| 万年县| 环江| 湄潭县| 乾安县| 平昌县| 太湖县| 宜宾县| 舒城县| 石屏县| 靖安县| 安宁市| 买车| 万荣县| 崇仁县| 肥城市| 五华县| 错那县| 黔西县| 韶关市| 郴州市| 宁陵县|