2014-03-25 31 views
0

我試圖用serializeArray創建一個數組並將其發佈到php。但我的代碼不起作用。我讀過這個問題(question),但我還沒有明白我的錯誤。如何發送數組到php與jquery ajax?

這是我的Ajax代碼

var str = $("form").serializeArray(); 
    $.ajax({ 
     type: "POST", 
     url: "myfile.php", 
     data: str, 
     success: function (value) { 
      $("#mydata").html(value); 
     } 
    }); 

HTML代碼

<form> 
    <select name="num0"> 
     <option value="">num0</option> 
     <option value="12">12</option> 
     <option value="13">13</option> 
    </select> 
    <select name="num1"> 
     <option value="">num2</option> 
     <option value="123">123</option> 
     <option value="133">133</option> 
    </select> 
    <select name="num2"> 
     <option value="">num3</option>  
     <option value="12345">12345</option> 
    </select> 
</form> 

PHP代碼

$postarr = array(); 
$num=$_POST['num0']; 
$postarr[]=$num; 
$num=$_POST['num1']; 
$postarr[]=$num; 
$num=$_POST['num2']; 
$postarr[]=$num; 

它給我以下錯誤信息:

通知:未定義的索引:num0(和其他變量的相同消息)。

順便說一下,英語不是我的母語;請原諒打字錯誤。

+1

我不知道這是否有關與否,但你的'

'標籤需要一種方法。由於它不是正確的HTML,序列化可能不起作用。 – Sablefoste

+0

使用'$(「form」)。serialize()',而不是'$(「form」)。serializeArray();'參見http://stackoverflow.com/a/10430571/689579 – Sean

+0

您是否嘗試調試'print_r($ _ REQUEST);'? –

回答

0

試試這個:

$.ajax({ 
    type: "POST", 
    url: "myfile.php", 
    data: $('form').serialize(), 
    success: function (value) { 
     $("#mydata").html(value); 
    } 
}); 

,取而代之的

$num=$_POST['num0'] 

使用

$num=filter_input(INPUT_POST,'num0'); 
+0

謝謝@andrew,但是當我試圖回顯$ num時,它不會回顯$ num值。 –

0

有一個輸入字段的名稱屬性你可以在你的$_POST創建一個數組:

<form method="post"> 
    <select name="values[num0]"> 
     <option value="">num0</option> 
     <option value="12">12</option> 
     <option value="13">13</option> 
    </select> 
    <select name="values[num1]"> 
     <option value="">num2</option> 
     <option value="123">123</option> 
     <option value="133">133</option> 
    </select> 
    <select name="values[num2]"> 
     <option value="">num3</option>  
     <option value="12345">12345</option> 
    </select> 
</form> 

在你的PHP,你可以使用它像這樣:

$postarr = $_POST['values']; 
echo $postarr['num0']; 
+0

謝謝@Dinistro,但它給了我這個錯誤:值是undefined –

+0

@ArvinFirouzi你還複製了我的html嗎?對我來說,它工作正常。 – Dinistro

0

添加ID到表單,

<form id="my_form"> 
<select name="num0"> 
    <option value="">num0</option> 
    <option value="12">12</option> 
    <option value="13">13</option> 
</select> 
<select name="num1"> 
    <option value="">num2</option> 
    <option value="123">123</option> 
    <option value="133">133</option> 
</select> 
<select name="num2"> 
    <option value="">num3</option>  
    <option value="12345">12345</option> 
</select> 

只要改變

var str = $("#my_form").serialize(); 

在腳本