2012-10-12 18 views
0

我有以下代碼:序列化和param回報問題與PHP和JQuery

var data_str = $('form').serialize(); 
    alert(data_str); 
    $("#SerializeTXT").text(data_str).show(); 
    $.ajax({ 
     type: 'POST', 
     url: 'test.php', 
     data: data_str, 
     success: function(data) { 
      $('#result').html(data); 
     }   
    }); 

這裏是我的test.php和結果:

<?php print_r($_POST);?> 
在#result

我得到

Array ([itemIDhidden] => 2640 [SelectQt] => 1 [Bread] => Black Bread_0 [Cheese] => American_0 [Toppings] => Bacon_0 [Description] => TWSTE 3 45 T4) 

在SerializeTXT我得到

itemIDhidden=2640&SelectQt=1&Bread=Black+Bread_0&Cheese=American_0&Toppings=Sauteed+Mushrooms_0&Toppings=Fried+Onions_0&Toppings=Bacon_0&Description=TWSTE+3+45+T4 

你可以看到,帖子僅獲取多重選擇的元素的最後一個元素。在SerializeTXT div中,我確切地從窗體中選擇了什麼。

任何想法,我怎樣才能獲得在php文件中的所有這些參數?

預先感謝您。

+2

爲什麼-1 ?????????? – Dev

回答

3

更改select元素的name從ToppingsToppings[]

<select name="Toppings" ... 

<select name="Toppings[]" ... 

然後$_POST['Toppings']將是一個數組。

+0

謝謝你的回答,但這些選擇字段是由代碼創建的,我不知道他們的名字。另外,它沒有工作。 –

+0

@ Obichamte2如果代碼在名稱中不使用'[]'而生成多重選擇,則代碼是錯誤的。 – xdazz

0
var form = $('form'); 
    var data_str = ''; 
    form.find('input, select, textarea').each(function() 
     { 
      data_str += $(this).attr('name')+'='+$(this).val()+'&'; 
     }); 
    $.ajax({ 
     type: 'POST', 
     url: 'test.php', 
     data: data_str, 
     success: function(data) { 
      $('#result').html(data); 
     }   
    }); 
    }; 

test.php print_r($ _ POST);返回

Array([itemIDhidden] => 2643 [SelectQt] => 1 [Bread] => Multi-Grain Bun_0 [Cheese] => American_0,Swiss_0 [Toppings] => Fried Onions_0,Bacon_0,Raw Onion_0 [Description ] => TEST TEST TEST [CancelItemForm] =>取消[BasketItem] =>確認)。

該數組可以在PHP文件被容易地操縱。我希望這有助於一些人外