2016-10-27 9 views
0

大きな問題の一部として、私が現在立ち往生している場所の簡単な例を思いついた。PHPへのPOSTへの配列を構築する

私は、test.phpファイルへの配列のjavascript POSTを使用するhtmlフォームを持っています。 普通のハードコーディングされたテキスト文字列を投稿すると動作します。フォームからビルドした配列を投稿しようとすると、「Hello from test」が出ますが、データは出力されません。結果はアラートボックスに表示されます。

(私はプレーンテキストビットをコメントアウトしている)

私は私が間違ってやっているのか分からないのですか?この配列は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の提案でシリアル化を使用し、両方のソリューションをポストに出くわす他の誰かのために投稿するつもりです。感謝 –