用 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 閱讀(914)
評論(1) 編輯 收藏