2016-10-27 28 views
0

作爲一個較大問題的一部分,我想出了一個簡化的示例,說明當前我被卡住了。構建一個數組以POST到PHP

我有一個html表單,它使用一個數組的javascript POST作爲test.php文件。 如果我發佈一個普通的硬編碼文本字符串它的作品。如果我嘗試發佈一個從我的表單構建的數組,「來自測試的Hello」會出來,但數據不會。結果在警告框中可見。

(我註釋掉明文位)

我不知道我做錯了什麼?在Chrome調試器中,該陣列對我來說很不錯。

下面是HTML和PHP

<html> 
<head> 
    <script language="javascript" type="text/javascript" src="jquery-3.1.1.js"></script> 
    <script> 
    function testResults(myform) 
    { 
     var outputArray =[]; 
     var count = 0; 
     for (var inp of myform) 
     { 
      if (inp.className == "portfolio") 
      { 
       if (inp.checked == true) 
       { 

        var nameString = inp.name; 
        var valueString = inp.value 
        outputArray[count]= nameString + ':' + '"' + valueString + '"'; 
        count = count +1; 
       } 
      } 
     } 
     //alert (outputArray); 

     $.post("test.php", 
     { 
      //blackPortfolio: "Black", 
      //bluePortfolio: "Blue" 
      outputArray 
     }, 
     function(data,status) 
     { 
      alert("Data: " + data + "\nStatus: " + status); 
     }); 
    } 


    </script> 
</head> 
<body> 

    <div id="userForm" > 

    <form name="myForm" action="BuildPostStrng.html" onsubmit="return testResults(myForm)" method="POST"> 
     <div class="CheckBoxTable"> 
      <div class="CheckBoxCell"> 
       <input type = "checkbox" class="portfolio" name = "blackPortfolio" value = "Black" /> 
       <label for = "blackPortfolio">Black</label> 
      </div> 
      <div class="CheckBoxCell"> 
       <input type = "checkbox" class="portfolio" name = "bluePortfolio" value = "Blue" /> 
       <label for = "bluePortfolio"> Blue </label> 
      </div> 
     <input type="submit" value="OK"> 
    </form> 
</div> 
<div id="map" </div> 

test.php的

<?php 
 
echo 'Hello from Test.php <BR>'; 
 

 
foreach($_POST as $key => $value) 
 
{ 
 
\t \t echo $key; 
 
\t \t echo '<BR>'; 
 
\t \t echo $value; 
 
\t \t echo '<BR>'; 
 
} 
 
?>

+0

您正在使這種方式變得複雜 - 使用jQuery的'serialize'方法來創建可供提交的數據集。 – CBroe

回答

0

參見the manual; data參數必須是普通對象或字符串

您正在向它傳遞一個數組,這是不允許的。

+0

工作。很明顯,一旦你看到答案:)。我一直在腦海中陷入陣陣。我只是將我的數組更改爲一個字符串,它工作。 @CBroe建議使用序列化並將這兩種解決方案發布給本文中的其他人。謝謝 –